本文章來自【知識林】
在Centos中的Nginx配置https做反向代理跟配置http做反向代理基本一樣,只是多了ssl的相關配置,如果不知道如何在Centos中配置Nginx做反向代理可以參考文章《Centos 中安裝與配置Nginx - 知識林》,如果沒有支持https的SSL證書可以參考文章《阿里云和騰訊云免費SSL證書 - 知識林》來獲取免費的SSL證書。
- 在Centos中配置Nginx做https的反向代理
只需要修改之前所描述的*.conf文件即可,具體內(nèi)容如下:
server {
listen 80;
listen 443;
server_name c.zslin.com;
ssl on;
ssl_certificate /etc/nginx/cert/1_c.zslin.com_bundle.crt;
ssl_certificate_key /etc/nginx/cert/2_c.zslin.com.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;
server_name zslin.com www.zslin.com *.zslin.com;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://website:port;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect http:// $scheme://; #做https跳轉
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
注意:
listen 443:表示監(jiān)聽443端口,即以https提交的請求,上面的listen 80表示同時也監(jiān)聽以http提交的請求;
ssl on:表示開啟SSL協(xié)議;
ssl_certificate:指定SSL證書的crt文件路徑(如果是阿里云的證書則是pem文件);
ssl_certificate_key:指定SSL證書的key文件路徑;
其他ssl開頭的可以照搬;
proxy_pass:指定代理的地址,可以是外網(wǎng)地址,也可以是內(nèi)網(wǎng)地址;
proxy_redirect http:// $scheme://:表示在程序中有redirect跳轉時,將采用原有傳輸協(xié)議方式跳轉,即如果是以https請求,在跳轉后依然是https。
配置完成重啟Nginx即可以https訪問。
- 在Windows中配置Nginx做https的反向代理
在Windows中安裝和配置Nginx其實也比較簡單,進入下載地址:http://nginx.org/en/download.html,點擊最新版下載,如下圖:

下載后將壓縮文件解壓到合適的目錄,可以看到如下圖的目錄結構:

運行nginx.exe即可,不過這樣運行不是在windows的服務中運行,這樣關閉和重新啟動都很不方便,也不穩(wěn)定,一般建議是將Nginx做為windows服務來運行。
制作windows服務可以下載winsw小工具來完成,解壓后可以得到winsw-1.9-bin.exe,可以將該文件移動到nginx安裝目錄,并重命名為服務名稱,如:nginx-server.exe,創(chuàng)建nginx-server.xml文件,注意這兩個名稱要一樣,xml文件內(nèi)容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<service>
<id>nginx</id>
<name>nginx</name>
<description>nginx</description>
<executable>D:\java\nginx-1.11.8\nginx.exe</executable>
<logpath>D:\java\nginx-1.11.8\</logpath>
<logmode>roll</logmode>
<depend></depend>
<startargument>-p D:\java\nginx-1.11.8\</startargument>
<stopargument>-p D:\java\nginx-1.11.8\ -s stop</stopargument>
</service>
注意:將executable、logpath、startargument、stopargument這幾個地方的路徑修改為自己nginx的安裝目錄即可。
打開命令提示符窗口進入到nginx-server.exe所在目錄,鍵入:nginx-server.exe install即可安裝windows服務,nginx-server.exe uninstall卸載windows服務。
現(xiàn)在開始配置。
在windows中Nginx的配置文件在:安裝目錄/conf/nginx.conf,在這個配置文件中復制一個server來做修改,內(nèi)容如下:
server {
listen 443 ssl;
server_name c.zslin.com;
ssl_certificate 1_c.zslin.com_bundle.crt;
ssl_certificate_key 2_c.zslin.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
#root html;
#index index.html index.htm;
proxy_pass http://localhost:81;
proxy_set_header Host $host;
proxy_redirect http:// $scheme://; #做https跳轉
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
注意:具體描述跟上面Centos中的一樣。ssl_certificate和ssl_certificate_key對應值沒有寫路徑是因為我已經(jīng)將這兩個文件復制到了conf所在目錄。
nginx-server.exe start:啟動服務
nginx-server.exe stop:停止服務
本文章來自【知識林】