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

2023-05-27 16:11:09 浏览数 (1)

1 实现(一)

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

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

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

代码语言:javascript复制
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 地址或者域名,例如:

代码语言:javascript复制
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 代理配置,如:

代码语言:javascript复制
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 接口,可以查看浏览器的开发者工具,查看是否有相关的错误信息,以便进一步排查问题。

0 人点赞