nginx怎么配置ssl可以即允许http访问也允许https访问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx怎么配置ssl可以即允许http访问也允许https访问相关的知识,希望对你有一定的参考价值。

方法/步骤
nginx配置SSL证书之后,https可以正常访问,http访问显示400错误,nginx的配置如下:
server
listen 80 default backlog=2048;
listen 443;
server_name wosign.com;
root /var/www/html;

ssl on;
ssl_certificate /usr/local/Tengine/sslcrt/ wosign.com.crt;
ssl_certificate_key /usr/local/Tengine/sslcrt/ wosign.com .key;

http访问的时候,报错如下:
400 Bad Request
The plain HTTP requset was sent to HTTPS port. Sorry for the inconvenience.
Please report this message and include the following information to us.
Thank you very much!

说是http的请求被发送到https的端口上去了,所以才会出现这样的问题。
2
server
listen 80 default backlog=2048;
listen 443 ssl;
server_name wosign.com;
root /var/www/html;

ssl_certificate /usr/local/Tengine/sslcrt/ wosign.com.crt;
ssl_certificate_key /usr/local/Tengine/sslcrt/ wosign.com .Key;

把ssl on;这行去掉,ssl写在443端口后面。这样http和https的链接都可以用,完美解决。
参考技术A

示例1,里面模拟的是用户访问一台Nginx服务器,Nginx代理后面一台真实服务器。

如果只是一台机器上设置也是类似的。

此外里面的域名和端口和证书,日志名称之类的根据自己的情况来定。

这个文件保存成一个name.conf在Nginx.conf中include即可。

upstream yourserver 
        ip_hash;
        server 172.16.10.10 weight=1 max_fails=2 fail_timeout=2;
        


server 
        listen       80;
        listen       443;
        server_name yoursever.domain.com;
        ssl     on;
        ssl_certificate      /etc/ssl/certs/yourname.crt;
        ssl_certificate_key  /etc/ssl/certs/yourname.key;

        ssl_session_timeout  5m;
        ssl_session_cache shared:SSL:50m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2  SSLv2 SSLv3;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers   on;

   
        location / 
                 proxy_pass http://yourserver;
                 client_max_body_size 15m;
                 proxy_redirect off;
                 proxy_set_header Host $host;
                 proxy_set_header X-Real-IP $remote_addr;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 proxy_set_header X-Forwarded-Host $server_name;
                 proxy_set_header X-Forwarded-Proto https;


                
         access_log /var/log/nginx/yourserver.log main;

        

参考技术B 服务器不配置301或302跳转HTTPS就可以了。
不配置跳转就意味着HTTP与HTTPS都可以打开了,本地浏览器清空记录访问。
参考技术C 这是个很简单的问题,你只需要同时监听两个端口就可以了:
server

listen 80; #允许http访问
listen 443 ssl; #允许https访问
server_name youdomain;
index index.html index.htm index.php;
root /data/web/;
参考技术D 怎么可能,只能选一种。

以上是关于nginx怎么配置ssl可以即允许http访问也允许https访问的主要内容,如果未能解决你的问题,请参考以下文章

nginx怎么配置ssl可以即允许http访问也允许https访问

nginx怎么配置ssl可以即允许http访问也允许https访问

nginx配置ssl证书,允许ssl访问

怎么使用Nginx配置ssl实现https访问的方法

linux nginx ssl证书怎么配置

Nginx的加载失败的SSL证书问题,怎么解决