在同时部署了Nginx和Tomcat的服务器上,可以使用Nginx来将服务器地址/域名的80端口映射到Tomcat的8080端口,从而不需要更改tomcat的配置端口来实现域名的直接访问。
目录
端口转发
Nginx配置:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://47.95.119.xxx(你的IP地址):8080;
}
}
使用以上代码将80端口映射到Tomcat的8080端口,从而实现不需要加端口号可以直接使用域名/IP地址访问。
配置HTTPS/SSL证书
而进行HTTPS/SSL配置的的时候又遇到了问题,博主使用的是阿里云提供的免费SSL证书,在下载证书时发现其本身就提供了Nginx和Tomcat两个版本的证书,具体来使用哪个配置呢?
其实,对于Nginx映射Tomcat的服务器,只需要配置Tomcat的SSL证书就可以了,对于Nginx只需要把原本的地址映射改为域名映射。
以Tomcat8的配置作为例子:
server.xml配置:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<Connector port="443"
protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="证书绝对路径(证书一般存放于Tomcat下的cert文件夹)"
keystoreType="PKCS12"
keystorePass="证书密码"
clientAuth="false"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
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"/>
而Nginx的配置更改为
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://域名:8080;
}
}
如果需要开启HTTP强制跳转HTTPS,则需要对web.xml进行配置,在文件</welcome-file-list>后添加以下内容:
<login-config>
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
这样,Nginx+Tomcat服务器的HTTPS/SSL证书配置就完成了!
访问结果为:
可能出现的问题
出现这种情况是因为Nginx的端口转发写的是IP地址而不是域名
如果出现下图这种情况记得放行443端口!!
希望能给各位提供参考和帮助。有问题可以留言或者Q我:9687637