首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NGINX将HTTPS重定向到HTTPS

NGINX将HTTPS重定向到HTTPS
EN

Stack Overflow用户
提问于 2020-05-25 10:01:45
回答 1查看 3.6K关注 0票数 1

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

案例说明:

我拥有三个域,它们指向NS服务器中相同的ip/网站:

  • example3.com

  1. example1.com
  2. example2.com

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

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

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

当我尝试侦听443 SSL并将if从1&2名服务器重定向到第三台服务器并运行service nginx restart时,我得到:

代码语言:javascript
复制
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时,我得到:

代码语言:javascript
复制
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上写道:

代码语言:javascript
复制
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,但我未能使它工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-26 16:03:50

感谢@RichardSmith,我了解到,为了将HTTPS重定向到HTTPS而没有"Page“警告,您应该将ssl_语句从服务器块中删除,以便将所有域都包括在内。

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62000085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档