CentOS 6.5 nginx+tomcat+ssl配置

2020-03-17 16:08:40来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

CentOS 6.5 nginx+tomcat+ssl配置

本文档用于指导在CentOS 6.5下使用nginx反向代理tomcat,并在nginx端支持ssl。

安装nginx。参见CentOS 6 nginx安装。

SSL证书申请。参见腾讯SSL证书申请和配置或[使用certbot为站点添加https支持]。

安装tomcat。目前使用的版本为8.x。一般使用以下版本:点击下载8.5.x

nginx 反向代理以及ssl配置
这里仅介绍片段,例子如下,以letsencrypt证书为例(腾讯证书配置参见https://cloud.tencent.com/document/product/400/4143):

upstream tomcat {
server 127.0.0.1:8080 weight=1;
}

server {
server_name xxx.com;
charset utf-8;

   location / {
       proxy_http_version                   1.1;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP       $remote_addr;
       proxy_set_header Connection "";
       proxy_set_header X-Forwarded-Proto https;
       proxy_redirect off;
       client_max_body_size       100m;
       client_body_buffer_size   256k;
       proxy_connect_timeout     60;
       proxy_send_timeout         30;
       proxy_read_timeout         30;
       proxy_buffer_size         8k;
       proxy_buffers           4 64k;
       proxy_busy_buffers_size   64k;
       proxy_temp_file_write_size 64k;
       proxy_pass http://tomcat;
   }
    
   error_page 404             /404.html;

   # redirect server error pages to the static page /50x.html
   #
   error_page   500 502 503 504 /50x.html;
   location = /50x.html {
       root   html;
   }


   listen 443 ssl; # managed by Certbot
   ssl_certificate /etc/letsencrypt/live/xxx.com/fullchain.pem; # managed by Certbot
   ssl_certificate_key /etc/letsencrypt/live/xxx.com/privkey.pem; # managed by Certbot
   include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
   ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
定义后端服务器。这里未举例负载均衡。

upstream tomcat {
server 127.0.0.1:8080 weight=1;
}
定义虚拟服务器

这里主要需要注意ssl证书的配置,以及代理部分的header设置,其影响tomcat端获取真实客户端ip、请求协议等,在未恰当配置的情况下可能造成获取的ip是nginx服务器的ip以及造成资源跨域问题。

tomcat配置
在nginx配置ssl证书的情况下,tomcat配置文件中不需要另行配置ssl证书,但需要获取nginx设置的请求头等信息。以下配置中的端口视具体情况配置。

将原本注释的8080 Connector恢复,并改成如下

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443"
proxyPort="443"/>

在host标签内添加如下(如果已存在则忽略)
其中%h用于显示客户端ip,但是在代理模式下显示的是nginx的ip,可考虑将 "%h" 修改为 "%{X-Real-IP}i" 即可获取到nginx请求头中已配置的客户端ip。
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t %r %s %b" />

获取真实ip,其中httpsServerPort在nginx使用默认443端口时不需添加,否则应当指定。
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="x-forwarded-for"
remoteIpProxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto"
protocolHeaderHttpsValue="https" httpsServerPort="7001"
/>


原文链接:https://www.cnblogs.com/MartyCode/p/12512172.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Linux 简单命令整理

下一篇:附013.Kubernetes永久存储Rook部署