大家好,又见面了,我是你们的朋友全栈君。
在生产环境中往往碰到一个网站需要多个访问端口,而默认的http访问端口是80,https访问的端口是443,然而这是不够在生产环境下使用的,这个时候就需要配置更多的端口来弥补这一缺点。
默认情况下用户输入URL时是约简单越好,比如http://baidu.com ,用户只需要输入baidu.com就可以访问。但是这样是通过http协议进行访问,而并非https进行访问。站在用户的角度来考虑问题他不会管你的网站是通过什么来访问的,他只管我的一些信息不被别人劫持到,这就要使用到https加密来进行访问。
比如我的nginx已经配置好了配置文件,如下图。
但是这种配置需要用户自动输入http还是https,这时我只需要添加一个配置就可以实现80端口自动跳转到443端口。
# 80端口自动转发到443端口
server {
listen 80;
server_name ********.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
listen 80;
listen 443 ssl;
……
}
但是这样会牵扯到配置的其他非80端口,所以上面的配置在生产环境是行不通的。
这些还是默认的端口,但如果要是其他端口呢?
比如:
server {
listen 9116 ssl;
server_name *********.com;
ssl_certificate /data/nginx/cert/214376322580000.pem;
ssl_certificate_key /data/nginx/cert/214376322580000.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
charset UTF8;
access_log logs/******.access.log main;
error_log logs/*****.error.log;
location / {
proxy_pass https://***;
}
}
重新检查nginx配置没有任何的报错。用浏览器访问时就会出来一个报错“The plain HTTP request was sent to HTTPS port”。
那么这时我就需要对配置文件进行更改。
首先注释掉80端口自动转发到443端口。
# 80端口自动转发到443端口
#server {
# listen 80;
# server_name ******.com;
# rewrite ^(.*)$ https://${server_name}$1 permanent;
#}
然后在server配置里面添加一句**‘error_page 497 301 https://$http_host$request_uri;
’ **
server {
listen 9116 ssl;
server_name ******.com;
ssl_certificate /data/nginx/cert/214376322580000.pem;
ssl_certificate_key /data/nginx/cert/214376322580000.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
error_page 497 301 https://$http_host$request_uri;
charset UTF8;
access_log logs/******.access.log main;
error_log logs/********.error.log;
location / {
proxy_pass https://****;
}
}
这样就可以实现http自动跳转到https了。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151179.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...