本文將介解析二級域名並配置ssl證書,http 重定向 https 。 注意:必定要看完這篇文章才能開始,當安裝出現一些報錯時,看最下面的報錯處理狀況。 html
看下面一張圖就好了。nginx
解析很簡單,咱們接着申請ssl證書。c++
註冊域名的時候申請免費的ssl證書,能夠申請一個免費的二級域名證書,必須保持和上面的二級域名一致。正則表達式
證書下載nginx ,咱們會獲得key和pem兩個文件centos
#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
複製代碼
直接官網下載【官網連接】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
複製代碼
安裝時直接./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 爲你的二級域名。
#進入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;
}
複製代碼
#修改完成後,從新加載配置文件
cd /usr/local/nginx/sbin/
./nginx -s reload
複製代碼
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; 註釋該行信息
複製代碼
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
這種方法的二級域名不用備案(前提一級域名已經備案),且具備ssl證書,使用真的很棒。