Nginx代理:由http到https

基于 SSL 证书,可将站点由 HTTP(Hypertext Transfer Protocol)切换到 HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),即基于安全套接字层(SSL)进行安全数据传输的加密版 HTTP 协议。

背景:众所众知,一台服务器开放80端口后我们可以直接IP地址访问到web页面,但ip地址暴露会可能会引起一些莫名的网络攻击。通常采取的策略就是去申请一个域名,经过域名绑定我们的ip就可以实现直接使用域名来访问,但80端口还是开放的,这样就使用到基于SSL的https了,简而言之就是更安全更方便了。可能某些同学会说我们可以改端口号,IP地址都懒得记那无疑会影响到我们装B不是。。。

在这里插入图片描述
备案也没想象中那么严格,很简单,2天就审核通过了。这里就直接说最后一步了,安装SSL证书,示例的环境是:windows server 2019 + nginx + flask

参考官方文档:https://cloud.tencent.com/document/product/400/47361

ssl.conf文件内容如下:

    server {
    listen 443 ssl; # 监听443端口
    server_name gzncpcc.xyz; #你的域名
    ssl_certificate C:/gmssl/nginx-1.16.0/conf/ssl/gzncpcc.xyz_bundle.crt; #ssl证书的crt文件路径
    ssl_certificate_key c:/gmssl/nginx-1.16.0/conf/ssl/gzncpcc.xyz.key;
    ssl_certificate c:/gmssl/nginx-1.16.0/conf/ssl/gzncpcc.xyz_bundle.pem; #ssl证书的pem文件路径
    ssl_certificate_key c:/gmssl/nginx-1.16.0/conf/ssl/gzncpcc.xyz.key; 
    #先配置签名证书,再配置加密证书,签名加密证书私钥 key 为同一个!
    ssl_session_timeout 5m; 
    ssl_protocols TLSv1.2;
    ssl_ciphers SM2-WITH-SMS4-SM3:ECDH:AESGCM:HIGH:MEDIUM:!RC4:!DH:!MD5:!aNULL:!eNULL; 
    ssl_prefer_server_ciphers on;
    location / { 
            proxy_pass  http://10.0.0.17/; #/内网地址,这样就可以关闭服务器的80端口了
           # proxy_pass  http://gzncpcc.xyz/; #//公网地址:项目端口号;http://gzncpcc.xyz/;
        } 
    }

    server {
    listen 443 ssl; # 监听443端口
    server_name blog.gzncpcc.xyz; # 对应子域名
    ssl_certificate C:/gmssl/nginx-1.16.0/conf/ssl/blog.gzncpcc.xyz_bundle.crt; #ssl证书的crt文件路径
    ssl_certificate_key c:/gmssl/nginx-1.16.0/conf/ssl/blog.gzncpcc.xyz.key;
    ssl_certificate c:/gmssl/nginx-1.16.0/conf/ssl/blog.gzncpcc.xyz_bundle.pem; #ssl证书的pem文件路径
    ssl_certificate_key c:/gmssl/nginx-1.16.0/conf/ssl/blog.gzncpcc.xyz.key; 
    #先配置签名证书,再配置加密证书,签名加密证书私钥 key 为同一个!
    ssl_session_timeout 5m; 
    ssl_protocols TLSv1.2;
    ssl_ciphers SM2-WITH-SMS4-SM3:ECDH:AESGCM:HIGH:MEDIUM:!RC4:!DH:!MD5:!aNULL:!eNULL; 
    ssl_prefer_server_ciphers on;
    location / { 
            proxy_pass  http://127.0.0.1:4000/; # 博客项目
        } 

    }

踩雷经验

  1. 没事多重启,把nginx关死再运行,把所有进程杀死。 否则也不会让我一直改到怀疑人生了,几个小时,什么资料都查了,就是反代理不上,改到怀疑人生,一直出现welcome nginx。。。
  2. 如果用了https,HTML页面引用的链接也要使用https的,例如引用
+    <script src="https://libs.baidu.com/jquery/2.1.1/jquery.min.js"></script>
+    <script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
-    <script src="http://libs.baidu.com/jquery/2.1.1/jquery.min.js"></script>
-    <script src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>

下面附上windows上的nginx常用操作指令

可以杀死名字为nginx.EXE的所有进程:taskkill /fi "imagename eq nginx.EXE" /f

检查: nginx.exe -t

运行:nginx.exe

重载:nginx.exe -s reload

停止:nginx.exe -s stop

查找端口占用情况:netstat -aon | findstr :80

ps:都是在cmd中执行,其他什么shell、git没有效果。。。

避免端口冲突,需要将IIS中的80和443端口占用关闭;python程序也可以自定义端口来避免冲突,但相应的ssl.conf中的proxy_pass http://10.0.0.17/;需要加上端口号。
在这里插入图片描述
正确的运行顺序:nginx——>python程序

最后附上网址看成果https://gzncpcc.xyz/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值