为服务器的Nginx配置SSL证书之后,https的网站可以正常访问,http访问显示400错误,通过301转向到https以后,能够实现部分功能,但是有一些程序不支持。
那么就需要http和https共存的状况。 下面介绍一下具体配置:
原Nginx的配置如下:
server {
listen 80 default;
listen 443;
server_name my.taohost.com;
root /var/www/html;
ssl on;
ssl_certificate /usr/local/taohost/sslcrt/mytao.com.crt;
ssl_certificate_key /usr/local/taohost/sslcrt/mytao.com.key;
}
这种情况下访问HTTP的时候会报400错误。http的端口被302到https上了。
修正如下:
server {
listen 80 default;
listen 443 ssl;
server_name my.taohost.com;
root /var/www/html;
ssl_certificate /usr/local/taohost/sslcrt/mytao.com.crt;
ssl_certificate_key /usr/local/taohost/sslcrt/mytao.com.key;
}
注意:
这里把 ssl on; 去掉了。ssl写在443端口后面。这样http和https的链接都可以用,完美解决。
顺带把301转向的方法也写在这里:
在服务器的Nginx配置文件里,加上如下一段: 这样就可以把http的链接都转化为https的链接。
server {
listen 80;
server_name my.taohost.com;
return 301 https://my.taohost.com$request_uri;
}