服务器 > 网络 > https

Nginx配置反向代理服务器实现在https网站中请求http资源

2人参与 2025-03-07 https

一、前言

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

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

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

三、nginx反向代理的主要功能‌

四、nginx反向代理的配置和使用场景

nginx 的反向代理功能通过配置文件进行配置,配置文件包含了全局配置、http配置和 server 配置等部分,可以设置监听端口、代理规则、缓存配置、负载均衡策略等。nginx 具有高性能的特点,采用异步非阻塞的事件驱动模型,可以处理大量并发连接,同时内存消耗较低,适合在资源有限的环境中使用。

五、实战配置

网站使用 nginx 作为服务器,协议从 http 升级为 https 的注意事项。

5.1 首先,修改宝塔面板配置

选择配置文件,http 请求重定向为 https 。所有 80 端口请求都重定向为 https请求。

# server代表的是nginx其中的一个服务器
server
{
    listen 80; # listen表示监听端口号80 (http)
    listen 443 ssl http2; # 表示监听443 端口号(https)
    server_name www.abc.com abc.com ip地址; # server_name表示服务器名称,现在同时匹配3个
    index index.php index.html index.htm default.php default.htm default.html; # 匹配/www/wwwroot/abc/index.html
    root /www/wwwroot/abc; # abc表示路径,网站的起始位置为/www/wwwroot/abc
    
 
    #http_to_https_start
    if ($server_port !~ 443){ # 端口号不等于443,则重写url到https://当前主机/后面所有路径,并永久重定向(permanent)
        rewrite ^(/.*)$ https://$host$1 permanent;
    }

5.2 接着配置代理服务器

# 代理serve图片服务器api
    location /api/ {
   # 通过代理,访问https://ip|域名/api/...时,代理到http://你的ip或域名:3004/api/...
        proxy_pass http://你的ip或域名:3004; # 注意`http://你的ip或域名:3004`末尾不添加`/`,这样的话`/api/`将会添加到3004后面
        proxy_redirect  off;
            proxy_set_header  host  $host;
            proxy_set_header  x-real-ip  $remote_addr;
            proxy_set_header  x-forwarded-for  $proxy_add_x_forwarded_for;
            proxy_set_header  x-forwarded-proto  $scheme;
    }
    
    # 代理音乐服务器api
    # /musicapi/,必须加上后面的/,不然代理服务不成功
    location /musicapi/ {
    # 访问https://你的ip或域名/musicapi/...,
    # 代理到http://你的ip或域名:3005/...,不包括/musicapi
        proxy_pass http://你的ip或域名:3005/; # 这里末尾添加了`/`,将不会添加`/musicapi/`在端口号后面
        proxy_redirect  off;
            proxy_set_header  host  $host;
            proxy_set_header  x-real-ip  $remote_addr;
            proxy_set_header  x-forwarded-for  $proxy_add_x_forwarded_for;
            proxy_set_header  x-forwarded-proto  $scheme;
    }

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文件里添加

# 把http链接升级为https
<meta http-equiv="content-security-policy" content="upgrade-insecure-requests" />

5.5 或者可以操作服务端的话,也可以在nginx配置里添加

server
{
    listen 80;
    listen 443 ssl http2;
    ......
    #升级可以升级为https的连接,兼容http
    add_header content-security-policy "upgrade-insecure-requests;connect-src *"; 
}

以上就是nginx配置反向代理服务器实现在https网站中请求http资源的详细内容,更多关于nginx配置反向代理服务器的资料请关注代码网其它相关文章!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Minio环境部署过程及如何配置HTTPS域名

03-07

Minio 上传文件请求负载原理解析

03-07

Nginx配置系统服务&设置环境变量方式

03-05

Ubuntu安装Nginx全过程(在线安装&源码编译安装)

03-05

nginx之Http代理和Websocket代理详解

03-05

Nginx如何实现对城市以及指定IP的访问限制

03-05

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论