Nginx透明反向代理https和http到另一台服务器

我已经研究了一段时间,但其他人询问的用例与我试图实现的更复杂/不同。

我有Nginx为站点提供端口80和443的页面,例如example1.com。 它工作正常服务http和https。 我现在在运行Apache的内部networking上有第二台服务器。 这是另一个名为example2.com的网站。 我有一个单一的wan ip地址,两个站点的Alogging指向它。

我的路由器将端口80和443转发到nginx服务器。 我想如果Nginx可以检查example1.com或example2.com的请求,并且像现在一样发送example1.com到自己,但是只是将example2.com的所有stream量传递给Apache服务器。 由于我已经在example2.com Apache服务器上正确设置了所有ssl证书,我希望Nginx能够透明地将所有内容传递给Apache。 我想我需要代理通行证。 我是否还需要在Nginx上设置相同的证书,或者是否可以透明地将所有内容传递到Apache服务器,就像我已经将端口443直接转发到Apache服务器一样? build议的configuration将不胜感激。

您只需要一个新的服务器块,将server_name设置为第二个域,并在该位置设置proxy_pass。 如果您需要使用https,则可以列出另一个证书,如果具有正确的备用名称,则可以列出相同的证书。 这在Nginx的初学者指南中有介绍 。

server { server_name example.com; listen 80; listen 443 ssl http2; ssl_certificate /var/lib/acme/certs/xyz/fullchain; ssl_certificate_key /var/lib/acme/certs/xyz/privkey; # Set up preferred protocols and ciphers. TLS1.2 is required for HTTP/2 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5; # This is a cache for SSL connections ssl_session_cache shared:SSL:5m; ssl_session_timeout 60m; location / { proxy_pass http://example.com; } }