nginx配置反向代理服务器,实如今https网站中请求http资源 ...

打印 上一主题 下一主题

主题 1031|帖子 1031|积分 3093


一、前言

‌Nginx反向代理‌是一种将客户端请求转发到后端服务器的技术,主要用于负载均衡、提高安全性和提拔性能。与正向代理差别,反向代理隐蔽了后端服务器的真实地址,客户端与之交互时只知道反向代理服务器的地址。‌


二、Nginx反向代理的工作原理

当客户端发送请求到反向代理服务器时,Nginx 会吸收这些请求,并根据配置将请求转发到后端的真实服务器上。Nginx 可以将多个请求分发到多个后端服务器,从而实现负载均衡,提高系统的并发处理本领和可用性。常见的负载均衡算法有轮询、IP 哈希、最少连接等。
三、Nginx反向代理的主要功能‌



  • 负载均衡‌:Nginx 可以通过反向代理实现负载均衡,将请求分发到多个后端服务器上,从而提高系统的并发处理本领和可用性。
  • 缓存加速‌:Nginx 可以缓存静态资源或动态页面,淘汰后端服务器的负载,提高响应速度。通过设置缓存时间、缓存规则等参数,可以机动地控制缓存计谋。‌
  • SSL终端‌:Nginx 可以作为 SSL 终端,吸收 HTTPS 请求并进行 SSL/TLS 解密,然后将解密后的请求转发给后端服务器,减轻后端服务器的负担,提高安全性和性能。‌
  • 安全过滤‌:Nginx 可以通过反向代理实现安全过滤功能,例如防止恶意请求、DDoS 攻击、SQL 注入等。通过配置访问控制规则、限制请求频率等方式,可以提高系统的安全性。
四、Nginx反向代理的配置和使用场景

Nginx 的反向代理功能通过配置文件进行配置,配置文件包含了全局配置、http配置和 server 配置等部分,可以设置监听端口、代理规则、缓存配置、负载均衡计谋等。Nginx 具有高性能的特点,接纳异步非阻塞的事件驱动模子,可以处理大量并发连接,同时内存消耗较低,得当在资源有限的情况中使用。
五、实战配置

网站使用 nginx 作为服务器,协议从 http 升级为 https 的注意事项。
5.1 首先,修改宝塔面板配置

选择配置文件,http 请求重定向为 https 。所有 80 端口请求都重定向为 https请求。
  1. # server代表的是nginx其中的一个服务器
  2. server
  3. {
  4.     listen 80; # listen表示监听端口号80 (http)
  5.     listen 443 ssl http2; # 表示监听443 端口号(https)
  6.     server_name www.abc.com abc.com ip地址; # server_name表示服务器名称,现在同时匹配3个
  7.     index index.php index.html index.htm default.php default.htm default.html; # 匹配/www/wwwroot/abc/index.html
  8.     root /www/wwwroot/abc; # abc表示路径,网站的起始位置为/www/wwwroot/abc
  9.    
  10.     #HTTP_TO_HTTPS_START
  11.     if ($server_port !~ 443){ # 端口号不等于443,则重写url到https://当前主机/后面所有路径,并永久重定向(permanent)
  12.         rewrite ^(/.*)$ https://$host$1 permanent;
  13.     }
复制代码
5.2 接着配置代理服务器

  1. # 代理serve图片服务器api
  2.     location /api/ {
  3.    # 通过代理,访问https://ip|域名/api/...时,代理到http://你的ip或域名:3004/api/...
  4.         proxy_pass http://你的ip或域名:3004; # 注意`http://你的ip或域名:3004`末尾不添加`/`,这样的话`/api/`将会添加到3004后面
  5.         proxy_redirect  off;
  6.             proxy_set_header  Host  $host;
  7.             proxy_set_header  X-Real-IP  $remote_addr;
  8.             proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
  9.             proxy_set_header  X-Forwarded-Proto  $scheme;
  10.     }
  11.    
  12.     # 代理音乐服务器api
  13.     # /musicapi/,必须加上后面的/,不然代理服务不成功
  14.     location /musicapi/ {
  15.     # 访问https://你的ip或域名/musicapi/...,
  16.     # 代理到http://你的ip或域名:3005/...,不包括/musicapi
  17.         proxy_pass http://你的ip或域名:3005/; # 这里末尾添加了`/`,将不会添加`/musicapi/`在端口号后面
  18.         proxy_redirect  off;
  19.             proxy_set_header  Host  $host;
  20.             proxy_set_header  X-Real-IP  $remote_addr;
  21.             proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
  22.             proxy_set_header  X-Forwarded-Proto  $scheme;
  23.     }
复制代码
5.3 完成上面所有配置后

http 网站升级到 https 网站,欣赏器可正常访问网站,网站请求的 api 接口,须要从 http://ip| 域名 :3005/lyric?id=32507038 修改为 http(s)://ip|域名/musicapi/lyric?id=32507038 。这里的流程就是,把本来请求的 :3005 用 /musicapi 替换掉,然后欣赏器发出并重定向成 https 开头的请求,接着 nginx 发现你的请求中带有 /musicapi ,就把你的请求转发给匹配上的 http:// 你的ip 或域名 :3005/ 服务器。
5.4末了还要在原来的index.html文件里添加

  1. # 把http链接升级为https
  2. <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
复制代码
5.5 或者可以操作服务端的话,也可以在nginx配置里添加

  1. server
  2. {
  3.     listen 80;
  4.     listen 443 ssl http2;
  5.     ......
  6.     #升级可以升级为https的连接,兼容http
  7.     add_header Content-Security-Policy "upgrade-insecure-requests;connect-src *";
  8. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表