首页 > 解决方案 > nginx 使用 https 和 http 设置两个子域不起作用

问题描述

我有两个站点要在我的服务器上使用 nginx 对它们进行负载平衡。第一个是 www.something.club,另一个是 extras.something.club。第一个已经有 https 和 http 设置,而 extras.something.club 我还没有设置 https 证书,所以只需要 http。

这里的问题是,当我点击 extras.something.club 时,它会打开与 www.something.club 相同的页面,并且会重定向到https://extras.something.club。此处页面应加载 extra.something.club 拥有页面,并且我不需要 https,因为证书属于 www,无论如何它都会开始给我警告。以下是我正在使用的配置。

www.something.com 在 /etc/nginx/sites-available/web.conf 有文件,在 /etc/nginx/sites-enabled/web.conf 有符号链接。下面是配置:

upstream webapp {
   server 123.123.0.12:8080;
   server 123.234.0.18:8080;
}

server {
   listen 80;
   server_name  www.something.club;
   return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name www.something.club;

    ssl                       on;
    ssl_certificate           /etc/letsencrypt/live/www.something.club/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/www.something.club/privkey.pem;

    # skipping some more ssl settings.

    access_log                /var/log/nginx/web.access.log;
    add_header                Strict-Transport-Security "max-age=31536000";

    location / {
      proxy_pass              http://webapp;
      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;
    }
}

extras.something.com 在 /etc/nginx/sites-available/extras.conf 有文件,在 /etc/nginx/sites-enabled/extras.conf 有符号链接

upstream extraswebapp {
   server 123.123.0.12:8081;
   server 123.234.0.18:8081;
}

server {
   listen 80;
   server_name extras.something.club;

   access_log                /var/log/nginx/web.access.log;
   add_header                Strict-Transport-Security "max-age=31536000";

   location / {
     proxy_pass              http://extraswebapp;
     proxy_set_header        Host $host;
     proxy_set_header        X-Real-IP $remote_addr;
     proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header        X-Forwarded-Proto $scheme;
   }
}

我已经用各种网站+文档上的许多示例验证了这个配置。我无法找到任何错误。此外,代码中没有任何内容将 http 重定向到 https 以获取 extra.something.club 另外,如果我使用这些端口访问直接 IP,它工作得非常好并且不会像 Nginx 那样重定向到 https。

有人可以帮我找出问题吗?

标签: nginxload-balancingnginx-reverse-proxynginx-config

解决方案


推荐阅读