nginx代理443转发

今天星期天,在家闲着,就想弄弄nginx。我用的Nginx版本为1.1.7。服务器为WindowsServer2019DataCenter。

之前在某个项目中由于跨域请求,用nginx 代理解决过。所以对nginx印象不错。实用的好工具。

1、首先去阿里云或者腾讯云申请一个免费一年的SSL证书。申请很快不需要钱。具体方式百度一堆。

2、现在证书在服务器上部署,根据你的Web容器有不同类型的证书。我这里下载的是Nginx版本的,因为我测试是在Nginx中拦截443进行其他内部转发,所以在Nginx中使用。

3、Nginx配置文件Conf配置项:

# HTTPS server
	server {
        listen 443 ssl http2;
        server_name www.XXXXX.cn;
        
        ssl_certificate     /cert/nginx/nginx_www.XXXXX.cn.pem;
        ssl_certificate_key /cert/nginx/nginx_www.XXXXX.cn.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSV1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_prefer_server_ciphers on;
         
        access_log logs/XXXXX/access.log;
        error_log  logs/XXXXX/error.log;

        location / {
            root   html;
            index  index.html index.htm;
        }             

        location /shop {
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade"; 
            proxy_pass_header Set-Cookie;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_redirect off;

            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods "POST, GET,PUT,DELETE, OPTIONS";
            add_header Access-Control-Allow-Headers "Origin, Authorization, Accept";
            add_header Access-Control-Allow-Credentials true;
            

            proxy_pass http://localhost:8092/;
        }

    }

配置过程中有几个地方需要注意的:

3.1、配置443拦截的域名和方式,注意拦截域名。

3.2、配置SSL证书的位置,这里的位置有点坑,一定要注意,当前在服务器上Nginx在C:/Nginx/ 目录中,证书在C:/Cert/目录中,但是经过几次测试,发现这个路径,不能写C:/Cert/XXX证书的路径,系统会提示:

BIO_new_file() failed (SSL: error:0200107B:system library:fopen:Unknown error:fopen

明显路径找不到,文件无法访问打开,如果将证书放到Nginx目录下面,写相对于Nginx.exe的路径,也是相同的提示。反正总是路径不对,无法方法。

后来经过查看Nginx启动报错日志,发现这个路径是相对于C:/ 的一个相对路径,从C盘根目录下配置,路径中无须保留C:/这样的字符,最后实验成功。

参考文章:https://blog.csdn.net/ken_ding/article/details/78929551

3.3、日志配置路径相对于Nginx.exe路径,路径为全路径,中间有文件夹不存在的需要提前创建好,不然启动会报出异常。

经过上述步骤配置,启动Nginx后,用https 访问域名,会显示Nginx页面,说明拦截配置成功。

 

4、配置转发内部网站,是用户访问系统时还是显示Htpps网站,并且是安全的。

location /shop {
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade"; 
            proxy_pass_header Set-Cookie;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_redirect off;

            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods "POST, GET,PUT,DELETE, OPTIONS";
            add_header Access-Control-Allow-Headers "Origin, Authorization, Accept";
            add_header Access-Control-Allow-Credentials true;
            

            proxy_pass http://localhost:8092/;
        }

关键地方标注:

4.1、拦截域名的子地址,这样能做到,一个域名下挂接多个子系统,并且都从这个域名下转发。

4.2、代理内部系统的转发方式,和跨域请求配置,这里看自己项目需要。

4.3、最后是关键的代理转发内部地址:配置内部系统配置,这里标注的以“/”结尾和不以“/”,差别很大,具体差别描述,看下面文章,这里不赘述了。总之带“/”,在直接转发了。没有拼接 shop/拦截地址,不带“/”,则在转发过程中会携带拦截的shop/ 进行一起转发。

参考文章:https://blog.csdn.net/Cz_csdn/article/details/104419708

可以在自己内部系统访问方式上面加上/shop的虚拟路径就可以,完美解决转发后的路径问题了。

怎样运行自己编写的html文本? 学习网页设计。用记事本编写好html文本后,怎么在浏览器上运行啊? html文件可以直接在txt文档里面编写然后修改文件后缀,直接双击打开; 也可以使用专门
1、安全测试: 1.1、软件权限   1)扣费风险:包括短信、拨打电话、连接网络等。   2)隐私泄露风险:包括访问手机信息、访问联系人信息等。   3)对App的输入有效性校验、认证、授
oracle如何查看当前有哪些用户连接到数据库 可以执行以下语句: select username,serial#, sid from v$session; —查询用户会话 alter
理论 所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件中,但是反过来则不行。这样会防止从子组件意外变更父级组件的状态,从而导致
笔者在线上使用redis缓存的时候发现即使某些查询已经设置了无过期时间的缓存,但是查询仍然非常耗时。经过排查,发现缓存确实已经不存在,导致了缓存击穿,查询直接访问了mysql数据库。因为我们用的
编辑推荐: 本文来自于jquery之家 ,html5制作canvas动画的基本步骤,控制canvas动画和实例代码。 要在 HTML5 canvas 中绘制图像动画效果,你需要绘制出每一帧
最新版的Hyper-V增强了对Liunx虚拟机的支持,增加了很多高级功能,例如动态内存和虚拟机实时备份。 在过去一段时间里,微软在Hyper-V角色提供的功能上取得了很大的改变,比如,动态内存、
1、 为什么需要JavaEE 我们编写的JSP代码中,由于大量的显示代码和业务逻辑混淆在一起,彼此嵌套,不利于程序的维护和扩展。当业务需求发生变化的时候,对于程序员和美工都是一个很重的负担。 为了程
前言 哈喽,大家好,我是asong。最近总有读者问我有没有Go语言方向优质的开源项目,可以写在简历上那种,一时还真想不起来,花了两天时间调研了一下,针对有无工作经验的分别推荐几个开源项目,下
HTML5andCSS3面试题大全 一.HTML5 1.html5有哪些新特性、移除了那些元素? 2.有⼏种前端储存的⽅式?这些⽅式的区别是什么?(追问)✨✨✨✨ 3.你对HTML语义化
本博客是摘自雷霄骅大神的课程《基于 FFmpeg + SDL 的视频播放器的制作》课程 里的内容,非常适合音视频小白入门,在这里感谢雷神的指导! 目录 视频显示知识 SDL简介
Bootstrap实战练习—Web全栈课程体系(表格+巨幕) 原网页效果图连接 我的网页效果 -我的代码 <!DOCTYPE html> <html> &l
快来领取红包
您的专属优惠已准备好!
打开微信扫一扫,关注公众号~
SiteMap 网站地图 文本地图 RSS