本文章来自【知识林】
在Centos中的Nginx配置https做反向代理跟配置http做反向代理基本一样,只是多了ssl的相关配置,如果不知道如何在Centos中配置Nginx做反向代理可以参考文章《Centos 中安装与配置Nginx - 知识林》,如果没有支持https的SSL证书可以参考文章《阿里云和腾讯云免费SSL证书 - 知识林》来获取免费的SSL证书。
- 在Centos中配置Nginx做https的反向代理
只需要修改之前所描述的*.conf文件即可,具体内容如下:
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
:表示监听443端口,即以https提交的请求,上面的listen 80
表示同时也监听以http提交的请求;
ssl on
:表示开启SSL协议;
ssl_certificate
:指定SSL证书的crt文件路径(如果是阿里云的证书则是pem文件);
ssl_certificate_key
:指定SSL证书的key文件路径;
其他ssl开头的可以照搬;
proxy_pass
:指定代理的地址,可以是外网地址,也可以是内网地址;
proxy_redirect http:// $scheme://
:表示在程序中有redirect跳转时,将采用原有传输协议方式跳转,即如果是以https请求,在跳转后依然是https。
配置完成重启Nginx即可以https访问。
- 在Windows中配置Nginx做https的反向代理
在Windows中安装和配置Nginx其实也比较简单,进入下载地址:http://nginx.org/en/download.html,点击最新版下载,如下图:
下载后将压缩文件解压到合适的目录,可以看到如下图的目录结构:
运行nginx.exe
即可,不过这样运行不是在windows的服务中运行,这样关闭和重新启动都很不方便,也不稳定,一般建议是将Nginx做为windows服务来运行。
制作windows服务可以下载winsw
小工具来完成,解压后可以得到winsw-1.9-bin.exe,可以将该文件移动到nginx安装目录,并重命名为服务名称,如:nginx-server.exe
,创建nginx-server.xml
文件,注意这两个名称要一样,xml文件内容如下:
<?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服务。
现在开始配置。
在windows中Nginx的配置文件在:安装目录/conf/nginx.conf,在这个配置文件中复制一个server
来做修改,内容如下:
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
对应值没有写路径是因为我已经将这两个文件复制到了conf所在目录。
nginx-server.exe start
:启动服务
nginx-server.exe stop
:停止服务
本文章来自【知识林】