在一个端口上有一个HTTPS服务器(5006)。 我想在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/
您的虚拟服务器是HTTP服务器,因此它不适用于https连接尝试。
为了使其HTTPS,你需要有这样的configuration:
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; } }
或者,您可以设置一个nginx stream
代理,它只是将TCPstream传递到后端,以便nginx不执行SSL终止:
stream { server { listen 35001; proxy_pass auth-server.local:5006; } }
这必须在http
上下文之外。