Nginx

Nginx SSL 重寫到本地主機

  • June 25, 2018

我想將 localhost 請求重定向到 HTTPS。這就是我的 .conf 的樣子:

server {
 listen 80;
 listen 443 ssl;

 ssl_certificate /etc/ssl/localhost.crt;
 ssl_certificate_key /etc/ssl/localhost.key;

 server_name localhost;

 return 301 https://$server_name$request_uri;

 location / {
   root /usr/share/nginx/html;
   index index.html index.htm;
   try_files $uri $uri/ /index.html =404;
 }
}

我在 Docker 容器中執行它,-p 80:80 -p 443:443但從瀏覽器呼叫伺服器會導致https://localhost/呼叫循環。

httpshttp伺服器共享相同的配置塊,它告訴 nginx 重定向到https://$server_name$request_uri地址。這就是重定向循環的原因。

您需要有一個單獨的serverhttps,您可以在其中提供實際內容,並且您只有http塊中的重定向。

在您的情況下,配置將如下所示:

server {
   listen 80;

   server_name localhost;

   return 301 https://$server_name$request_uri;
}

server {
   listen 443 ssl;

   ssl_certificate /etc/ssl/localhost.crt;
   ssl_certificate_key /etc/ssl/localhost.key;

   server_name localhost;

   location / {
       root /usr/share/nginx/html;
       index index.html index.htm;
       try_files $uri $uri/ /index.html =404;
   }
}

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