1. 程式人生 > >Nginx配置https站點

Nginx配置https站點

Nginx配置HTTPS

最近配置了現網網站的HTTPS,簡單記錄一下配置過程。

先交代一下我的服務部署環境:Nginx監聽80埠,轉發到Tomcat8080埠;伺服器使用的是阿里雲的ECS,作業系統是Windows Server 2012CA證書也是在阿里雲的CA證書服務上面申請的免費證書。
1. 申請CA證書
首先去購買CA證書。一般各大雲服務提供商都會有此類證書服務,根據公司和業務需求,可以自己選擇免費或者付費的證書。我選擇的是Symantec 賽門鐵克的免費型DV SSL,此類證書一個證書對應一個域名,如果涉及到二級域名需要另外申請一個二級域名的CA證書。阿里雲上面的證書購買過程比較簡單,需要注意的兩個地方:1.要對域名進行驗證;2.CSR

的生成方式。如果自己的域名是放在阿里雲解析上面的,阿里雲會自動校驗;如果域名沒有在阿里雲上面解析,需要按照阿里雲的提示進行一下操作。另外CSR的生成方式建議選擇系統生成CSR,自己生成CSR稍微麻煩一點。證書購買成功後補全好自己的域名即可。
2. Nginx配置
CA證書稽核通過後,將證書下載到本地,會得到一個zip包,裡面有xxx.keyxxx.pem兩個檔案。
1) 在Nginx的安裝目錄下建立cert目錄,並將xxx.keyxxx.pem拷貝到該目錄中。注意:如果是自己生成的CSR檔案,應該只有一個xxx.key檔案,將該檔案拷貝進去就可以了。
2) 開啟conf目錄中的nginx.conf
配置檔案修改443埠監聽配置。Nginx預設配置是將443埠的監聽配置註釋掉了的,如下:

# HTTPS server
# #server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;
# location / {
#
#
#}
#}

將註釋開啟,並對其中部分內容進行修改,修改後如下:

server {
    listen 443;
    server_name your-domain-name;
    ssl on;
    root html;
    index index.html index.htm;
    ssl_certificate   cert/214293826510663.pem;
    ssl_certificate_key  cert/214293826510663.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 / {
        root html;
        index index.html index.htm;
    }
}

3) 修改配置並儲存後,Nginx安裝目錄執行nginx.exe -s reload命令可重啟Nginx使配置生效。
4) 通過https:\\xxxx.com方式訪問你的網站,如果能夠正常訪問,瀏覽器左邊出現綠色的標記或者出現鎖的標記那就成功了。

幾點注意事項:
1. 如果HTTPS方式訪問網站出現無響應的情況,可以看看自己的伺服器防火牆配置,是不是需要將443埠加到例外中去;
2. 注意自己xxx.pemxxx.key的存放路徑,區分相對路徑和決定路徑使用方式;
3. 通過Nginx安裝目錄下的logs資料夾中的access.logerror.log日誌檔案來進行排錯;
4. 同一個Nginx可以配置多個HTTPS的域名,只需要將上面443埠的監聽配置複製一份加到配置檔案中,然後修改好相應的server_namexxx.pemxxx.key檔案路徑即可。

補充一點配置:
如果Nginx配置了HTTPS,那背後的Tomcat就沒有必要再進行配置了,另外,為了相容原來80埠的HTTP方式的訪問,可以將80埠的訪問請求全部轉發到443埠上,增加配置如下:

server {
    listen       80;
    server_name  your-domain.com;

    location = / {
        rewrite ^(.*) https://your-domain.com/$1 permanent;
    }

    location / {
        rewrite ^(.*) https://your-domain.com/$1 permanent;
    }
}

--------------------- 本文來自 肖老闆 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/cloume/article/details/78252319?utm_source=copy