Nginx

NGINX 代理 SSL 終止最佳實踐

  • June 12, 2018

我正在對 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:24ssl on; 指令已棄用。您可以將其註釋掉。詳情:http ://hg.nginx.org/nginx/rev/46c0c7ef4913

引用自:https://serverfault.com/questions/741019