mathhater 2022-09-19 09:16 采纳率: 64.3%
浏览 80
已结题

nginx 配置https遇到的问题

本人用nginx配置了多个server,一台服务器跑多个网站,一开始全部listen在80端口,后来配置了ssl安全证书
nginx配置文件如下,在浏览器里直接输入www.example1.com和www.example2.com可以正常访问http的接口网站。
如果想要访问https的接口,必须在浏览器里输入https://www.example1.com或者https://www.example2.com才能分别访问安全链接的网站,如果省略前面的协议项,默认访问的是http的不安全网站,如果把example1的80端口server注释掉,在浏览器里直接输入www.example1.com跳出来的是www.example2.com的这个不安全链接,我现在想要达到的目的是直接在浏览器里输入www.example1.com或者www.example2.com能直接访问安全链接网站,二不需要手动在前面加https,请问各位如何实现。
另外还有一个问题是我在该台服务器上运行了nodejs配置了一个nodejs的服务器listen在8081端口,在8081端口开发了一些图片静态资源,如果客户端要请求我的这个8081端口的静态资源,如果我输入www.example1.com:8081/1.png可以get到静态图片,但是如果我输入https:www.example1.com:8081/1.png浏览器会提示该站点无法提供安全链接,请问这个如何解决。

server{
        listen 443 ssl;
        server_name www.example1.com;
        ssl_certificate  80000000_www.example1.pem;
        ssl_certificate_key  8000000_www.example1.key;
        root /www/example1;
        include enable-php.conf;
        location / {
           index  index.php index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

server {
        listen       80;
        server_name  www.example1.com;
        root /www/example1;
        include enable-php.conf;
        location / {
           index  index.php index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    
server{
        listen 443 ssl;
        server_name www.example2.com;
        ssl_certificate  80000000_www.example2.pem;
        ssl_certificate_key  8000000_www.example2.key;
        root /www/example2;
        include enable-php.conf;
        location / {
           index  index.php index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

server {
        listen       80;
        server_name  www.example2.com;
        root /www/example2;
        include enable-php.conf;
        location / {
           index  index.php index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }


  • 写回答

3条回答 默认 最新

  • 一把编程的菜刀 2022-09-19 09:32
    关注

    使用 return 301 来跳转,用这个的也有很大好处,就是把权重都转到https上

    server {
        listen       80;
        server_name www.abc1.com;
        return 301 https://$server_name$request_uri; #http跳转https
    }
    
    

    第二种方式使用rewrite

    server{
    listen80;
    server_name www.abc.com;
    rewrite^(.*)https://$server_name$1permanent;#此句最关键
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月27日
  • 已采纳回答 9月19日
  • 创建了问题 9月19日

悬赏问题

  • ¥15 请问以下文字内容及对应编码是用了什么加密算法或压缩算法呢?
  • ¥50 关于#html5#的问题:H5页面用户手机返回的时候跳转到指定页面例如(语言-javascript)
  • ¥15 无法使用此凭据登录,因为你的域不可用,如何解决?(标签-Windows)
  • ¥15 yolov9的训练时间
  • ¥15 二叉树遍历没有报错但无法正常运行
  • ¥15 在linux系统下vscode运行robocup3d上场球员报错
  • ¥15 Python语言实验
  • ¥15 SAP HANA SQL 增加合计行
  • ¥20 用C#语言解决一个英文打字练习器,有偿
  • ¥15 srs-sip外部服务 webrtc支持H265格式