一个端口 (5006) 上有一个 HTTPS 服务器。我想让它在 35001 上可用,并在同一个 35001 上提供其他服务(通过添加/app
、/auth
、/admin
等位置)。
服务器是auth-server.org.local
。尝试添加一个端口:
server {
listen 35001;
location / {
proxy_pass https://auth-server.org.local:5006;
}
}
输出:
$ curl -k -X GET https://auth-server.org.local:5006
<h1>My auth server</h1>
$ curl -k -X GET https://auth-server.org.local:35001
curl: (35) gnutls_handshake() failed: An unexpected TLS packet was received.
为什么 35001 不起作用?我错过了什么?我使用了以下指南:https://www.nginx.com/resources/admin-guide/nginx-https-upstreams/
答案1
您的虚拟服务器是 HTTP 服务器,因此它不适用于 https 连接尝试。
为了使其成为 HTTPS,您需要进行以下配置:
server {
listen 35001 ssl;
server_name example.com;
ssl_certificate /path/to/ssl/certificate;
ssl_certificate_key /path/to/ssl/certificate;
location / {
proxy_pass https://auth-server.local:5006;
}
}
或者,您可以设置一个 nginxstream
代理,它只是将 TCP 流传递到后端,这样 nginx 就不会执行 SSL 终止:
stream {
server {
listen 35001;
proxy_pass auth-server.local:5006;
}
}
这必须超出上下文http
范围。