Ubuntu

如何使用 varnish 與 nginx 作為 SSL 終止符並使用 http 到 https 轉發與 nginx

  • February 18, 2020

我已經安裝了 varnish 和 nginx,並使用讓我們加密 SSL 來保護我的網站。我針對 nginx cgi 記憶體測試了清漆,我發現清漆在我的案例(wordpress)中要快一些。所以我需要一些幫助,了解如何使用 nginx 進行帶有清漆的 SSL 終止以及如何將 http 轉發到 https,因為我的網站僅是 https。我正在執行 ubuntu 18.04 請幫幫我!

編輯:我遵循了本指南:https ://www.linode.com/docs/websites/varnish/use-varnish-and-nginx-to-serve-wordpress-over-ssl-and-http-on-debian-8 /

它在 nginx 中給出了我的錯誤(埠 80 已在使用中)

請幫我!

假設

  • Nginx 在埠 443上執行一個 vhost來處理傳入的 HTTPS 請求
  • Nginx 有一個執行在80 埠的虛擬主機來處理傳入的 HTTP 請求並將它們重定向到 Varnish
  • Varnish 在埠 6081上執行,位於 HTTPS Nginx 虛擬主機後面
  • Nginx 可能還會在埠 8080上執行一個虛擬主機,它不進行代理,但充當實際的網路伺服器,提供文件或 PHP 請求。

如您所見,我的設置與https://www.linode.com/docs/websites/varnish/use-varnish-and-nginx-to-serve-wordpress-over-ssl-and-中的設置略有不同http-on-debian-8/。那是因為我已經使用單獨的 Nginx 虛擬主機處理了 HTTP 到 HTTPS 的重定向。

在這種情況下,Varnish 監聽的不是 80 埠,而是 6081。

HTTPS 虛擬主機

這是處理 HTTPS 連接的 Nginx虛擬主機的範例:

server {
   listen 443 ssl;
   keepalive_timeout   70;
   server_name example.com www.example.com;
   ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
   ssl_ciphers         HIGH:!aNULL:!MD5;
   ssl_certificate ssl.crt;
   ssl_certificate_key ssl.key;
   ssl_session_cache   shared:SSL:20m;
   ssl_session_timeout 4h;
   access_log /var/log/nginx/example.com-access.log;
   error_log /var/log/nginx/example.com-error.log;

   location / {
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_pass http://127.0.0.1:6081;
       proxy_http_version 1.1;
   }
}

HTTP 到 HTTPS 重定向虛擬主機

這是一個將 HTTP 重定向到 HTTPS 的片段:

server {
       server_name example.com www.example.com;
       listen  80;
       rewrite "^/$" https://example.com permanent;
       rewrite "^/(.+)$" http://example.com/$1 permanent;
}

編輯內容

虛擬主機已被編輯並包含範例值。server_name請在表達式中相應地替換主機名。

還請確保ssl_certificatessl_certificate_key語句指向實際存在的文件。

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