Nginx

如何讓 nginx 使用我的證書?

  • June 18, 2019

我需要在 nginx 上配置一個允許 https 的反向代理。它應該工作的方式如下:

  1. 客戶端連接到站點(埠 80);
  2. 反向代理將其重定向到埠 443;
  3. 使用我的證書加密通信;
  4. 然後客戶端請求被代理傳遞到另一個站點。

我的問題在 3 和 4 中。我的配置成功地完成了所有這些並重定向到它應該重定向到的站點,但是它沒有使用我的證書,而是使用我重定向到的站點的證書。

配置:

server {
   listen 80;
   server_name example.com;
   return 301 https://$server_name:443;
} 

server {
   listen 443 ssl http2;
   listen [::]:443 ssl http2;
   server_name example.com;

   ssl_certificate /path/to/cert.crt;
   ssl_certificate_key /path/to/key.key;

   location {
       proxy_pass https://another-site.com;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}

就像我說的,這可行,但它不使用我在此配置中指定的證書。

我認為您必須在其中放入更多配置

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;

ssl on;
ssl_certificate /path/to/cert.crt;
ssl_certificate_key /path/to/key.key;
keepalive_timeout    50;
ssl_session_timeout  10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:AES128-SHA:AES256-SHA:AES;  #Check ciphers at http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ciphers
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparams_4096.pem; check dhparams at nginx documentation  
ssl_session_cache shared:ssl_session_cache:20m;

}

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