Nginx
NGINX 代理 SSL 終止最佳實踐
我正在對 NGINX 代理後面的一些網站進行 dockerizing。我正在從 Apache 設置遷移,並且是 NGINX 的新手。據我了解,我應該使用 NGINX 代理到 Web 伺服器。我希望一切都通過 SSL 並將所有非 SSL 請求重定向到 HTTPS。
代理背後的私人網站是否應該通過普通 HTTP 埠 80 與代理通信?那仍然完全加密嗎?僅供參考,是否可以從 NGINX 代理代理到 apache 網站?
您必須將 SSL 證書安裝到 Nginx(您的客戶端將直接與其通信)並定義 80 埠伺服器,然後將其重定向到 443。這是這種設置的範例配置:
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 是高度(!)可配置的 Web 伺服器 + 代理伺服器。但請記住,如果您的 dns 記錄指向 Nginx ip 地址,那麼您必須在其上安裝 SSL。&如果您的容器無法從 Web 訪問,這是一個很好的安全實踐,您不需要加密 nginx 和您的容器之間的流量,這可以節省您的 CPU 電源
此外,nginx 具有強大的代理/fastcgi 記憶體功能,因此您可以記憶體應用程序的輸出(如果它們對於每個請求都不是動態的,例如靜態文件)
截至 2018 年 4 月 25 日星期三 14:57:24
ssl on;
指令已棄用。您可以將其註釋掉。詳情:http ://hg.nginx.org/nginx/rev/46c0c7ef4913