我在一个NGINX代理的后面停靠了几个网站。 我正在从Apache设置迁移,是NGINX的新手。 据我所知,我应该使用NGINX代理服务器。 我希望一切都通过SSL和所有非SSL请求被redirect到HTTPS。
我的代理后面的私人网站应该通过正常的HTTP端口80与代理进行通信吗? 这仍然是encryption的吗? 仅供参考,是否可以从NGINX代理到apache网站进行代理?
您必须将SSL证书安装到Nginx(您的客户端将直接与它通信),并定义80端口服务器,然后将其redirect到443.以下是这种设置的示例configuration:
upstream APP { server CONTAINER:PORT; } // Redirect 80 to 443 server { listen 80 default_server; server_name yourdomain.com; return 301 https://www.yourdomain.com$request_uri; } server { listen 443 ssl default_server; server_name yourdomain.com; ssl on; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; // Rest of your configuration is all up to your architecture location / { // more config... proxy_pass APP; // more config... } }
我不知道你的docker集装箱有什么样的应用程序。
作为一个例子,如果你有一个PHP应用程序。 你可以使用PHP-FPM并在两者之间彻底删除Apache。 Nginx可以通过fast-cgi与你的容器一起工作。 根据您的需要和负载等,可以有数百个不同的设置
Nginx是高度(!)可configuration的Web服务器+代理服务器。 但只要记住,如果你的DNSlogging指向Nginx的IP地址,那么你必须安装SSL。 如果你的容器没有访问networking,这是一个很好的安全做法,你不需要encryptionnginx和你的容器之间的stream量,从而节省你的CPU功耗
此外,nginx具有强大的代理/ fastcgicachingfunction,因此您可以caching应用程序的输出(如果它们不是每个请求的dynamic的,例如静态文件)