说前面的话:
突然完成这些任务,且必须使用https访问多个域名的传输访问,实际上用于niginx很简单,文档齐全(无论是数字服务器还是AlibabaCloud ) 进入漏洞的理由是到niginx服务器的陌生绕道。
1 .绕道: tomcat支持ssl
修改server.xml文件
port='443 '
protocol=' org.Apache.coyote.http 11.http 11 nio protocol '
sslenabled='true '
方案=' https '
secure='true '
使用keystorefile='confssl生产的证书名称相对路径. jks '
keystoretype='jks '
keystorepass='证书对应的密码'
clientauth='false '
sl protocol=' TLS v1 tlsv 1.1 tlsv 1.2 '
max threads=' 150 ' ciphers=' TLS _ RSA _ with _ AES _ 128 _ CBC _ sha,TLS _ RSA _ with _ AES _ 256 _ CBC _ ssha
keystoretype='jks ' :请注意,此配置与Alibaba云(阿里巴巴云)的不同。 请记住修改
prefix=' localhost _ access _ log ' suffix='.txt '
pattern='%h %l %u %t '%r' %s %b' /
据同事说,配置就可以了。 服务器启动结束后,进入坑的位置也占用了443个端口。 真是个好坑,不需要传输的时候,可以更改配置。
无法启动nginx bind (to0.0.0. 0:443 failed ) 1001: anattemptwasmadetoaccessasocketinawayforbiddenbyitsaccesspermiled
2 .言归正传
2.1需求概览
如果在一个服务器(临时云服务器的ip地址)上部署多个服务,并且需要使用不同的域名访问不同的服务,则可以通过nginx代理进行域名传输,并且可以配置ssl模块(我的服务器正在使用窗口系统。 如果没有ssl模块,需要自己通电,则默认情况下受支持。)
要在一个服务中同时部署服务a、服务b和服务c这三个服务,必须在该服务中配置以下域名:
ygdlb01.domain.com域名支持服务a;
ygdlb02.domain.com域名支持服务b;
ygdlb03.domain.com域名支持服务c;
服务通过https访问,http请求重定向到https。
2.2设置服务代理
由于nginx监听443端口tomcat的配置,我们在这里打了半天卡,但未成功===),以实现域名传输和https访问。 本例中使用的证书是crt格式的证书
(1)服务a的配置
服务器{
listen 443 ssl; #拦截端口,建议在nginx1.5之后
server_name ygdlb01.domain.com; #请求域名
ssl_certificate ssl/证书名称a.crt; 您可以在#crt证书路径、存储位置nginx的conf/ssl文件夹下使用绝对路径
ssl_certificate_key ssl/证书名称a.key; #crt证书密钥路径
ssl_session_timeout 5m; #会话超时时间
SSL _ ciphersecdhe-RSA-AE s128-GCM-sha 2563360 ECD he : ecdh : AES 3360 high : 空: anull: md5: adh: rc4; #加密算法
SSL _ protocolstlsv1tlsv 1.1 tlsv 1.2; #ssl协议
#阻止所有请求
位置/{
proxy_http_version 1.1; #代理使用的http协议
proxy_set_header host $host; #header添加请求主机信息
proxy _ set _ headerx-real-IP $ remote _ addr; # header追加请求源ip信息
proxy _ set _ headerx-forwarded-for $ proxy _ add _ x _ forwarded _ for; #添加代理记录
proxy _ pass http://127.0.0.1:8001;
#服务a访问地址}
}
(2)服务b的配置
server {
listen 443 ssl; #监听端口,nginx1.5后推荐使用
server_name ygdlb02.domain.com; #请求域名
ssl_certificate ssl/证书名称b.crt; #crt证书路径,存放位置nginx的conf/ssl文件夹下,可以使用绝对路径
ssl_certificate_key ssl/证书名称b.key; #crt证书key路径
ssl_session_timeout 5m; #会话超时时间
ssl_ciphers ecdhe-rsa-aes128-gcm-sha256:ecdhe:ecdh:aes:high:!null:!anull:!md5:!adh:!rc4; #加密算法
ssl_protocols tlsv1 tlsv1.1 tlsv1.2; #ssl协议
# 拦截所有请求
location / {
proxy_http_version 1.1; #代理使用的http协议
proxy_set_header host $host; #header添加请求host信息
proxy_set_header x-real-ip $remote_addr; # header增加请求来源ip信息
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; # 增加代理记录
proxy_pass http://127.0.0.1:8002; #服务b访问地址
}
}
(3)服务c的配置
server {
listen 443 ssl; #监听端口,nginx1.5后推荐使用
server_name ygdlb03.domain.com; #请求域名
ssl_certificate ssl/证书名称c.crt; #crt证书路径,存放位置nginx的conf/ssl文件夹下,可以使用绝对路径
ssl_certificate_key ssl/证书名称rqdhm; #crt证书key路径
ssl_session_timeout 5m; #会话超时时间
ssl_ciphers ecdhe-rsa-aes128-gcm-sha256:ecdhe:ecdh:aes:high:!null:!anull:!md5:!adh:!rc4; #加密算法
ssl_protocols tlsv1 tlsv1.1 tlsv1.2; #ssl协议
# 拦截所有请求
location / {
proxy_http_version 1.1; #代理使用的http协议
proxy_set_header host $host; #header添加请求host信息
proxy_set_header x-real-ip $remote_addr; # header增加请求来源ip信息
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; # 增加代理记录
proxy_pass http://127.0.0.1:8003; #服务b访问地址
}
}
2.3 http请求自动转发
增加server配置,监听80端口,对所有域名进行https重定向
server {
listen 80; #监听端口
server_name a.domain.com b.domain.com c.domain.com; #请求域名
return 301 https://$host$request_uri; #重定向至https访问。
}
我的需求到这里就搞定了,下面的内容属于扩展内容,记录一下
3.websocket的ssl配置
假如服务a中使用到websocket(访问接口为:/websocket),需要将ws协议更换为wss协议,可在服务a的server配置中增加一个location配置,拦截websocket进行单独代理。
服务a的配置,修改后:
server {
listen 443 ssl; #监听端口
server_name ygdlb01.domain.com; #请求域名
ssl_certificate ssl/证书名称a.crt; #crt证书路径
ssl_certificate_key ssl/证书名称a.key; #crt证书key路径
ssl_session_timeout 5m; #会话超时时间
ssl_ciphers ecdhe-rsa-aes128-gcm-sha256:ecdhe:ecdh:aes:high:!null:!anull:!md5:!adh:!rc4; #加密算法
ssl_protocols tlsv1 tlsv1.1 tlsv1.2; #ssl协议
# 拦截所有请求
location / {
proxy_http_version 1.1; #代理使用的http协议
proxy_set_header host $host; #header添加请求host信息
proxy_set_header x-real-ip $remote_addr; # header增加请求来源ip信息
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; # 增加代理记录
proxy_pass http://127.0.0.1:8001; #服务a访问地址
}
# 拦截websocket请求
location /websocket {
proxy_pass http://127.0.0.1:8001;
proxy_http_version 1.1;
proxy_set_header upgrade $http_upgrade;
proxy_set_header connection "upgrade";
}
}
到此这篇关于nginx域名转发https访问的实现的文章就介绍到这了,更多相关nginx域名转发https访问内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!
希望与广大网友互动??
点此进行留言吧!