gpt4 book ai didi

ssl - NGINX 将 HTTPS 重定向到 HTTPS

转载 作者:行者123 更新时间:2023-12-04 22:43:21 24 4
gpt4 key购买 nike

如何将 https 从一个域重定向到另一个域的 https?

案例描述:

我拥有三个域,它们被定向到 NS 服务器中的同一 IP/网站:

  • example1.com
  • example2.com
  • example3.com

  • 我只为最初为第一个域颁发的一个 SSL 许可证付费,所以当我购买第二个域时,我将所有流量重定向到 https://example1.com

    最近,我想将所有调用重定向到一个新域: https://example3.com .我为新域重新颁发了旧的 SSL 许可证并成功安装。最后一部分是将所有流量重定向到新域。

    现在,来自 http 的所有流量都可以很好地重定向,但是 http 小号 ( https://example1.comhttps://example2.com )根本不针对,并导致工作“不安全”页面。

    当我尝试收听 443 SSL如果从 1&2 名称服务器重定向到第三个并运行 service nginx restart ,我得到:
    Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

    当我运行 systemctl status nginx.service ,我得到:
    nginx.service - A high performance web server and a reverse proxy server
    Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Sun 2020-05-24 17:53:24 UTC; 4min 5s ago
    Process: 14068 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
    Process: 13952 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 14073 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=1/FAILURE)
    Main PID: 13957 (code=exited, status=0/SUCCESS)

    我猜我做错了什么并重定向 443 SSL两次是不允许的。

    代码

    这是我的 conf,无需重定向 https example1.com 和 example2.com:

    /etc/nginx/nginx.conf我有 include /etc/nginx/sites-enabled/*; .

    /etc/nginx/sites-enabled/example3.com.conf我写了这个:
    server {
    listen 80;
    server_name example3.com wwww.example3.com example1.com www.example1.com example2.com www.example2.com;
    rewrite ^/(.*) https://example3.com/$1 permanent;
    }


    server {
    listen 443 ssl;
    server_name example3.com;
    ssl_certificate /etc/ssl/certs/ssl-bundle.crt;
    ssl_certificate_key /etc/ssl/websitessl/example3.com.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    }

    这可能是重复的:
    HTTPS to HTTPS redirect Nginx
    但我没能成功。

    最佳答案

    感谢@RichardSmith,我了解到为了在没有“页面不安全”警告的情况下将 HTTPS 重定向到 HTTPS,您应该将 ssl_ 语句放在服务器 block 之外,以便包含所有域。

    ssl_certificate /etc/ssl/certs/ssl-bundle.crt;
    ssl_certificate_key /etc/ssl/websitessl/example3.com.key;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

    server {
    listen 80 default_server;
    listen 443 ssl default_server;
    return 301 https://example3.com$request_uri;
    }

    server {
    listen 443 ssl;
    server_name example3.com;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    }

    关于ssl - NGINX 将 HTTPS 重定向到 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62000085/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com