二級域名解析及nginx配置ssl

前言

本文將介解析二級域名並配置ssl證書,http 重定向 https 。 注意:必定要看完這篇文章才能開始,當安裝出現一些報錯時,看最下面的報錯處理狀況。 html

1. 解析域名

看下面一張圖就好了。nginx

2. ssl證書申請

解析很簡單,咱們接着申請ssl證書。c++

註冊域名的時候申請免費的ssl證書,能夠申請一個免費的二級域名證書,必須保持和上面的二級域名一致。正則表達式

證書下載nginx ,咱們會獲得key和pem兩個文件centos

3. 安裝nginx

3.1 安裝各類依賴

#gcc安裝,nginx源碼編譯須要
yum install gcc-c++

#PCRE pcre-devel 安裝,nginx 的 http 模塊使用 pcre 來解析正則表達式
yum install -y pcre pcre-devel

#zlib安裝,nginx 使用zlib對http包的內容進行gzip
yum install -y zlib zlib-devel

#OpenSSL 安裝,強大的安全套接字層密碼庫,nginx 不只支持 http 協議,還支持 https(即在ssl協議上傳輸http)
yum install -y openssl openssl-devel
複製代碼

3.2 下載nginx源

直接官網下載【官網連接】api

使用wget命令下載(推薦)安全

#下載版本號可根據目前官網最新穩定版自行調整 
wget -c https://nginx.org/download/nginx-1.16.1.tar.gz

複製代碼
#根目錄使用ls命令能夠看到下載的nginx壓縮包,而後解壓 
tar -zxvf nginx-1.16.1.tar.gz 
#解壓後進入目錄 
cd nginx-1.16.1
複製代碼

4. 配置ssl

安裝時直接./configure是不會安裝ssl模塊的,須要加上 依次執行以下命令:bash

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module  --with-http_realip_module 
make
make install
複製代碼

nginx的ssl配置session

#進入nginx配置文件目錄,找到nginx的配置文件nginx.conf
cd /usr/local/nginx/conf/

#直接修改
vi nginx.conf
複製代碼
server {
     listen  443 ssl;
     server_name  www.xxx.com;

   # ssl on;

     ssl_certificate   /etc/ssl/certs/證書名.pem;
     ssl_certificate_key  /etc/ssl/certs/證書名.key;
     ssl_session_timeout 5m;
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://localhost:8080;
    }
}

複製代碼

證書必定要放在:/etc/ssl/certs/證書名.pem;否則會報錯。ui

www.yy.xxx.com 爲你的二級域名。

5. 配置域名映射

#進入nginx配置文件目錄,找到nginx的配置文件nginx.conf
cd /usr/local/nginx/conf/

#直接修改
vi nginx.conf
複製代碼
server {
        listen       80;
        server_name  www.yy.xxx.com;

        #charset koi8-r;

        #access_log logs/host.access.log main;
        rewrite ^(.*)$  https://$host$1 permanent; #用於將http頁面重定向到https頁面

        location / {
            proxy_pass http://localhost:8080;
        }

複製代碼

6. 從新加載配置文件

#修改完成後,從新加載配置文件
cd /usr/local/nginx/sbin/
./nginx -s reload
複製代碼

7. 部分報錯處理

警告:[warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/vhost/api.conf:16

nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/vhost/api.conf:16
複製代碼

解決方法: ssl on 改成以下:

#listen 443; 修改該行信息,以下便可
listen 443 ssl; 
server_name xxx.xxxx.com; 
#ssl on; 註釋該行信息
複製代碼

7.2 [error] open() "/usr/local/nginx/logs/nginx.pid" failed

nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed
複製代碼

解決方法:

#執行命令
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
複製代碼

使用nginx -c的參數指定nginx.conf文件的位置

若是出現:

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

killall -9 nginx 殺掉nginx 進程 而後重啓就好了。

另外 還有一個很重要的可能 ps -ef | grep nginx 看下主目錄 是哪裏 是否是裝了兩個可惡的 Nginx 哈哈nginx

8. 小結&參考資料

小結

這種方法的二級域名不用備案(前提一級域名已經備案),且具備ssl證書,使用真的很棒。

參考資料

相關文章
相關標籤/搜索