Nginx SSL 重写到本地主机

Nginx SSL 重写到本地主机

我想将 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/调用循环。

答案1

您的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;
    }
}

相关内容