在同時部署了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