首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx,wss 请求后端https 接口,使用 nginx 进行代理后端接口,如何配置不需要手动在浏览器输入后端接口

nginx,wss 请求后端https 接口,使用 nginx 进行代理后端接口,如何配置不需要手动在浏览器输入后端接口

作者头像
一写代码就开心
发布2023-05-27 16:11:09
4.8K0
发布2023-05-27 16:11:09
举报
文章被收录于专栏:java和pythonjava和pythonjava和python

1 实现(一)

wss 请求后端https 接口,使用nginx 进行代理后端接口,如何配置不需要手动在浏览器输入后端接口

如果您使用 Nginx 作为代理服务器,可以通过以下方式配置,从而避免在浏览器中手动输入后端接口:

在 Nginx 的配置文件中添加以下内容:

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        return 301 https://$server_name$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate /path/to/ssl/certificate;
    ssl_certificate_key /path/to/ssl/private/key;

    location / {
        proxy_pass https://yourbackendserver.com;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

2 将 yourdomain.com 替换为您的域名,将 /path/to/ssl/certificate 和 /path/to/ssl/private/key 替换为您的 SSL 证书和私钥的路径,将 https://yourbackendserver.com 替换为您的后端服务器的地址。

3 重启 Nginx 服务器,使配置生效。

通过上述配置,当您访问 https://yourdomain.com 时,Nginx 会将请求代理到您的后端服务器,并自动缓存 SSL 证书,无需手动在浏览器中输入后端接口。

2 实现(二)

如果您在 Nginx 中配置的是 IP 和端口,那么您需要将 Nginx 的配置文件中的 server_name 配置项修改为代理服务器的 IP 地址或者域名,例如:

server {
    listen 80;
    server_name 192.168.1.100; // 将 server_name 修改为代理服务器的 IP 地址或者域名

    location / {
        return 301 https://$server_name$request_uri;
    }
}





server {
    listen 443 ssl;
    server_name 192.168.1.100; // 将 server_name 修改为代理服务器的 IP 地址或者域名

    ssl_certificate /path/to/ssl/certificate;
    ssl_certificate_key /path/to/ssl/private/key;

    location / {
        proxy_pass https://yourbackendserver.com;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /ws {
        proxy_pass https://yourbackendserver.com;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

上述代码中,将 server_name 修改为代理服务器的 IP 地址或者域名,其他配置与之前的示例代码相同。然后,您只需要在前端代码中将 WebSocket 的 URL 修改为代理服务器的 IP 地址或者域名,即可实现自动连接 WebSocket 接口。

如果您已经按照上述方法配置了 Nginx,但是前端使用 wss 协议仍然无法自动连接 WebSocket 接口,可能有以下几个原因:

前端代码中 WebSocket 的 URL 没有修改为 Nginx 代理的地址。请确保修改了前端代码中 WebSocket 的 URL,将其修改为 Nginx 配置的代理地址。

Nginx 的配置文件中没有正确配置 WebSocket 的代理。请确保在 Nginx 的配置文件中添加了正确的 WebSocket 代理配置,如:

location /ws {
    proxy_pass https://yourbackendserver.com;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

其中,/ws 替换为您的 WebSocket 代理路径,https://yourbackendserver.com 替换为您的 Spring Boot 项目的地址。

3 代理服务器的 SSL 证书存在问题。请确保您的代理服务器的 SSL 证书已经正确安装并配置,且没有过期或者被吊销等问题。

如果您仍然无法自动连接 WebSocket 接口,可以查看浏览器的开发者工具,查看是否有相关的错误信息,以便进一步排查问题。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 实现(一)
  • 2 实现(二)
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档