请教个nginx 80和443共存,但不强制跳转的配置

斌斌 11天前 23

我想让80和443共存,但是不强制跳转先。因为以前程序调用api,用的http。直接强制https,以前程序会出错。
下面2个配置在同一个文件夹。
80配置如下
server {
     listen     80;
    server_name  a.com;
    location / {
        proxy_pass http://localhost:5000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection keep-alive;
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-Proto $scheme;
    }
      error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
443配置如下
server {
    listen       443 ssl;
    server_name  a.com;
# 开启 ssl
    ssl on;
    # 指定 ssl 证书路径
    ssl_certificate /var/ZhengShu/a/a.com_chain.crt;
    # 指定私钥文件路径
    ssl_certificate_key /var/ZhengShu/a/a.com_key.key;
   
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    location / {
        proxy_pass http://localhost:5000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection keep-alive;
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-Proto $scheme;
    }
      error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
最新回复 (15)
  • llyang 11天前
    引用 2
    纯净水 发表于 2021-9-9 09:50
    包在里头
    写在443 server里面?
    那你这个if语句,永远都是false
  • whl32 11天前
    引用 3
    一般都是程序的问题,比如你wp 的后台填了https,你的所有链接都会跳https
  • feixiang 11天前
    引用 4
    理论上不会强制调转
  • 纯净水 11天前
    引用 5
    MJJ闲的蛋疼啥都找茬 删除
  • 纯净水 11天前
    引用 6
    mark 一下
  • 榆榆不可及 11天前
    引用 7
    你​要​是​ ​没​有​r​e​t​u​r​n​ ​和​r​e​w​r​i​t​e​ ​这​种​ ​就​不​会​跳​转​啊
  • chief567 11天前
    引用 8
    你这80端口的配置也没有配强制跳转啊
  • 乌拉擦 11天前
    引用 9
    楼上正解
  • llyang 11天前
    引用 10
    别写301,各写各自的location,相互不干扰
    这样80 443打开的东西就好不相干
    443也可以修改成任意端口,其实
    你上面的写法,构架上没毛病
  • llyang 11天前
    引用 11
    纯净水 发表于 2021-9-9 09:31
    强制转应该要
    你这个是放置在443的server外面,事先判断?
  • 纯净水 11天前
    引用 12
    llyang 发表于 2021-9-9 09:49
    你这个是放置在443的server外面,事先判断?
    包在里头
  • llyang 11天前
    引用 13
    纯净水 发表于 2021-9-9 09:50
    包在里头
    写在443 server里面?
    那你这个if语句,永远都是false
  • 纯净水 11天前
    引用 14
    llyang 发表于 2021-9-9 09:52
    写在443 server里面?
    那你这个if语句,永远都是false
    1. server {
    2.     listen                     80;
    3.     listen                     443 ssl http2;
    4.     server_name              ########省略


    5.     ssl_ciphers                ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    6.     ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
    7.     ssl_session_cache          shared:SSL:5m;
    8. ########省略


    9.     if ($scheme = http) {
    10.         return  301 https://$host$request_uri;
    11.     }

    12.     gzip                       on;
    13.     gzip_comp_level            6;
    14.     gzip_min_length            1k;
    15.     gzip_types                 text/plain text/css text/xml text/javascript text/x-component application/json application/javascript application/x-javascript application/xml application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype;
    16.     client_max_body_size       10M;

    17.     location / {
    18.         index      index.html index.htm index.php;
    19.         try_files  $uri $uri/ /index.php?$args;
    20.     }

    21.     location ~ ^/.+\.php(/|$) {
    22.     ########省略



    23. }
    来自于APPNODE
  • tcpdump 11天前
    引用 15
    默认就不会
  • llyang 11天前
    引用 16
    纯净水 发表于 2021-9-9 09:54
    来自于APPNODE
    水王,消消气。都秋天了,咋那么大的火气
    这个例子真不错。学习了
    server里面同时80 443, 包在里面肯定管用。这种写法很精简
  • 游客
    17
返回