急求,nginx如何配置http https同时访问?

后台接口要加小程序支持,所以整个接口项目要上https。
但是http必须仍然能用,因为以前客户端程序都是用的http 8081端口写死到代码里的。
所以不能重定向,必须保证两个都能用。

一开始我按百度上泛滥的答案,在listen 8081下面加一句listen 443 ssl,把ssl on删了。
没效果,只有http能用。

之后改成两个server文件,一个新的443端口配置ssl,另一个8081老端口不改。
还是一样。

阅读 5k
2 个回答
server {
    listen 80;
    server_name nav.zzz.com;

    rewrite ^ https://$http_host$request_uri? permanent;    # force redirect http to https
}

server {
    listen 443 ssl;
    server_name nav.zzz.com;

    root /usr/local/www/zzz;
    index  index.html;

    # ssl
    ssl_certificate "/etc/nginx/certs/zzz.crt";
    ssl_certificate_key "/etc/nginx/certs/zzz.key";
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_session_timeout  5m;

    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 2;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
}
新手上路,请多包涵

楼上的答案就是HTTP自动跳转到HTTPS,显然不是题主需要的答案。
题主可以用两个LOCATION,一个使用80端口,一个使用443端口,域名一样,这样可以实现不同协议的不通跳转。

推荐问题