Nginx,代理传递给Apache和SSL

我有Nginx和Apache设置Nginx的代理服务器 – 除了静态资源之外,一切都传给了Apache。 我有一个服务器设置为端口80,如下所示:

server { listen 80; server_name *.example1.com *.example2.com; [...] location ~* \.(?:ico|css|js|gif|jpe?g|png|pdf|te?xt)$ { access_log off; expires max; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; add_header Vary: Accept-Encoding; } location / { proxy_pass http://127.0.0.1:8080; include /etc/nginx/conf.d/proxy.conf; } } 

而且,由于我们有多个SSL站点(不同的SSL证书),我有一个server{}块为他们每个像这样:

 server { listen 443 ssl; server_name *.example1.com; [...] location ~* \.(?:ico|css|js|gif|jpe?g|png|pdf|te?xt)$ { access_log off; expires max; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; add_header Vary: Accept-Encoding; } location / { proxy_pass https://127.0.0.1:8443; include /etc/nginx/conf.d/proxy.conf; proxy_set_header X-Forwarded-Port 443; proxy_set_header X-Forwarded-Proto https; } } server { listen 443 ssl; server_name *.example2.com; [...] location ~* \.(?:ico|css|js|gif|jpe?g|png|pdf|te?xt)$ { access_log off; expires max; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; add_header Vary: Accept-Encoding; } location / { proxy_pass https://127.0.0.1:8445; include /etc/nginx/conf.d/proxy.conf; proxy_set_header X-Forwarded-Port 443; proxy_set_header X-Forwarded-Proto https; } } 

首先,我认为这里存在一个非常明显的问题,那就是我对所有东西都进行了双重encryption,首先是在nginx级别,然后是Apache。 为了让一切变得更糟,我刚开始使用Amazon的Elastic Load Balancer,所以我将证书添加到了ELB,现在SSLencryption发生了三次。 这对于演出来说太恐怖了。

什么是理智的方式来处理这个? 我应该在ELB上转发https – >在nginx上的http – >在Apache上的http?

其次,上面有这么多的重复。 最好的方法是不要重复自己把所有的静态资产处理放在一个包含文件中,只是把它包含在服务器中?

第1部分:传递encryption的stream量

只有你的第一个服务器“终止”客户端连接的SSL是很好的。 你应该有一个设置,你所控制的机器可以以一种可信的方式(例如在一个专用networking上)交换stream量,而不必一次又一次地运行SSL。 SSL只是为了传输安全。 浏览器 – >第一个Web服务器是不受信任的传输。 Web服务器 – >内部服务应该是可信的,因为你也将与文件服务器,数据库服务器甚至其他像memcache,redis等等进行通信。

第2部分:nginxconfiguration重复

nginx的include语句允许一个非常自由的重用forms,我可以看到你已经开始使用它了 – 继续并重构该configuration,直到看起来“正确”。 而且,nginx的可变扩展对于创build可重用的可重用应用程序非常有用,而不会造成混乱。