二级域名转发

二级域名转发,第1张

Nginx域名转发https访问的实现

本文主要介绍Nginx域名转发https访问的实现,通过示例代码非常详细的介绍,对大家的学习或者工作有一定的参考价值。有需要的朋友下面和边肖一起学习。

说前面的话:

突然接到这样一个任务,要用https转发访问多个域名。其实Niginx的使用很简单,文档也很齐全(不管是腾讯云还是阿里云)。入坑的原因是Niginx服务器的陌生和弯路。

1。Bypass:Tomcat支持SSL

腾讯云Tomcat服务器证书配置

修改server.xml文件

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" scheme="https" secure="true" keystoreFile="conf\ssl\生产的证书名称我使用相对路径.jks" keystoreType="JKS" keystorePass="证书对应的密码" clientAuth="false" sslProtocol="TLSv1+TLSv1.1+TLSv1.2" maxThreads="150"ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"> </Connector> <!--DefineanAJP1.3Connectoronport8009--> <Connectorport="8209"protocol="AJP/1.3"redirectPort="8443"secretRequired=""useBodyEncodingForURI="true"URIEncoding="UTF-8"/>

KeystoreType="JKS":请注意,这个配置和阿里云的不一样,记得修改。

<EnginedefaultHost="我的域名"name="Catalina"jvmRoute="tomcat1"URIEncoding="UTF-8"> <ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> <RealmclassName="org.apache.catalina.realm.LockOutRealm"> <RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/> </Realm> <Hostname="我的域名"appBase="webapps"unpackWARs="true"autoDeploy="true"> <ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs" prefix="localhost_access_log"suffix=".txt" pattern="%h%l%u%t&quot;%r&quot;%s%b"/> </Host> </Engine>

据同事说,配置不错,入坑的地方也不错。服务器启动后,443端口也被占用,真的很无聊。如果不需要转发,可以更改配置。

未能启动nginxbind()到0.0.0:443失败(10013:试图以其访问权限禁止的方式访问套接字

2。言归正传

2.1要求概述

在一台服务器(腾讯云的服务器的IP地址)上部署多个服务,需要通过不同的域名访问不同的服务时,可以通过Nginx代理转发域名,也可以通过配置SSL模块实现https访问。(我的服务器用的是window系统。如果没有需要自己开启的SSL模块,默认支持。)

在一台服务器上同时部署三个服务:服务A、服务B和服务c。应该为这些服务配置以下域名:

  • Pangsir01.domain.com域名通信服务公司;
  • Pangsir02.domain.com域名通信服务公司;
  • Pangsir03.domain.com域名通信服务公司;
  • 通过https访问服务,http请求被重定向到https。

    2.2服务代理设置

    配置Nginx监听443端口(==我因为Tomcat配置在这里卡了半天,没成功==),实现域名转发和https访问。本例中使用的证书是crt格式的证书。

    (1)服务a的配置

    server{ listen443ssl;#监听端口,Nginx1.5后推荐使用 server_namepangsir01.domain.com;#请求域名 ssl_certificatessl/证书名称A.crt;#crt证书路径,存放位置Nginx的conf/ssl文件夹下,可以使用绝对路径 ssl_certificate_keyssl/证书名称A.key;#crt证书key路径 ssl_session_timeout5m;#会话超时时间 ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#加密算法 ssl_protocolsTLSv1TLSv1.1TLSv1.2;#SSL协议 #拦截所有请求 location/{ proxy_http_version1.1;#代理使用的http协议 proxy_set_headerHost$host;#header添加请求host信息 proxy_set_headerX-Real-IP$remote_addr;#header增加请求来源IP信息 proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;#增加代理记录 proxy_passhttp://127.0.0.1:8001;#服务A访问地址 } }

    (2)服务B的配置

    server{ listen443ssl;#监听端口,Nginx1.5后推荐使用 server_namepangsir02.domain.com;#请求域名 ssl_certificatessl/证书名称B.crt;#crt证书路径,存放位置Nginx的conf/ssl文件夹下,可以使用绝对路径 ssl_certificate_keyssl/证书名称B.key;#crt证书key路径 ssl_session_timeout5m;#会话超时时间 ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#加密算法 ssl_protocolsTLSv1TLSv1.1TLSv1.2;#SSL协议 #拦截所有请求 location/{ proxy_http_version1.1;#代理使用的http协议 proxy_set_headerHost$host;#header添加请求host信息 proxy_set_headerX-Real-IP$remote_addr;#header增加请求来源IP信息 proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;#增加代理记录 proxy_passhttp://127.0.0.1:8002;#服务B访问地址 } }

    (3)服务C的配置

    server{ listen443ssl;#监听端口,Nginx1.5后推荐使用 server_namepangsir03.domain.com;#请求域名 ssl_certificatessl/证书名称C.crt;#crt证书路径,存放位置Nginx的conf/ssl文件夹下,可以使用绝对路径 ssl_certificate_keyssl/证书名称C.key;#crt证书key路径 ssl_session_timeout5m;#会话超时时间 ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#加密算法 ssl_protocolsTLSv1TLSv1.1TLSv1.2;#SSL协议 #拦截所有请求 location/{ proxy_http_version1.1;#代理使用的http协议 proxy_set_headerHost$host;#header添加请求host信息 proxy_set_headerX-Real-IP$remote_addr;#header增加请求来源IP信息 proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;#增加代理记录 proxy_passhttp://127.0.0.1:8003;#服务B访问地址 } }

    2.3HTTP请求的自动转发

    添加服务器配置,监听端口80,用https重定向所有域名。

    server{ listen80;#监听端口 server_namea.domain.comb.domain.comc.domain.com;#请求域名 return301https://$host$request_uri;#重定向至https访问。 }

    我的需求就做到这里,以下内容属于延伸内容,请记录。

    3。WebSocket的SSL配置

    如果服务A中使用了websocket(访问接口:/websocket),则需要将ws协议替换为wss协议,可以在服务A的服务器配置中添加一个位置配置来拦截websocket进行单独代理。

    修改后服务A的配置:

    server{ listen443ssl;#监听端口 server_namepangsir01.domain.com;#请求域名 ssl_certificatessl/证书名称A.crt;#crt证书路径 ssl_certificate_keyssl/证书名称A.key;#crt证书key路径 ssl_session_timeout5m;#会话超时时间 ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#加密算法 ssl_protocolsTLSv1TLSv1.1TLSv1.2;#SSL协议 #拦截所有请求 location/{ proxy_http_version1.1;#代理使用的http协议 proxy_set_headerHost$host;#header添加请求host信息 proxy_set_headerX-Real-IP$remote_addr;#header增加请求来源IP信息 proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;#增加代理记录 proxy_passhttp://127.0.0.1:8001;#服务A访问地址 } #拦截websocket请求 location/websocket{ proxy_passhttp://127.0.0.1:8001; proxy_http_version1.1; proxy_set_headerUpgrade$http_upgrade; proxy_set_headerConnection"upgrade"; } }

    关于转发https访问Nginx域名的实现这篇文章到此为止。关于转发https访问Nginx域名的更多信息,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

    欢迎分享,转载请注明来源:内存溢出

    原文地址: https://outofmemory.cn/zz/774267.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-03
    下一篇 2022-05-03

    发表评论

    登录后才能评论

    评论列表(0条)

    保存