Nginx部署多台tomcat,并配置SSL证书进行https访问

申请证书步骤省略,启动多台tomcat省略

配置nginx

1.配置访问http时重定向为https请求
    server {
       #监听端口为80
        listen       80;
		#域名
        server_name  10.79.10.77;

        #即访问http时重定向为https
        rewrite ^(.*)$ https://${server_name}$1 permanent;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        
    }
2.配置https
    # HTTPS server
    server {
	    #监听443端口
        listen       443 ssl;
		#域名  因为我的tomcat部署跟nginx同一台linux,所以此处填localhos,具体根据个人配置
        server_name  localhost;

		#SSL证书
        ssl_certificate      /usr/local/nginx/ssl/server.cer;
		#证书钥匙
        ssl_certificate_key  /usr/local/nginx/ssl/private.key;

        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers on;
        ssl_verify_client off;

        location / {
		  #转发到upstream tomcat下面的ip
          proxy_pass http://tomcat; 
          # 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
          add_header Access-Control-Allow-Origin *;
          proxy_set_header X-Forwarded-Proto $scheme;
		  #此处是https访问的关键环节
          proxy_set_header X-Forwarded-Proto https;     
          proxy_redirect off;
          proxy_buffer_size 64k;
          proxy_buffers   4 32k;
          proxy_busy_buffers_size 64k;
        }
    }
3.配置多台tomcat
    upstream tomcat{
        ip_hash;        #根据用户访问ip进行hash分配到server,这样能完整保存session
        server 127.0.0.1:8081; #tomcat1的ip
        server 127.0.0.1:8083; #tomcat2的ip
    }
4.在tomcat的server.xml配置添加以下内容

在Connector里添加proxyPort="443"

   <Connector connectionTimeout="20000" port="8081" protocol="HTTP/1.1" redirectPort="8443"  proxyPort="443" URIEncoding="UTF-8"/>

在下面补充添加一个RemoteIpValve

		<Valve className="org.apache.catalina.valves.RemoteIpValve" 
			 remoteIpHeader="x-forwarded-for" 
			 remoteIpProxiesHeader="x-forwarded-by" 
			 protocolHeader="x-forwarded-proto" 
			 protocolHeaderHttpsValue="https" />

nginx完整配置


user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;

    keepalive_timeout  65;

    proxy_headers_hash_max_size 51200;
    proxy_headers_hash_bucket_size 6400;

    upstream tomcat{
        ip_hash;        #根据用户访问ip进行hash分配到server,这样能完整保存session
        server 127.0.0.1:8081; #tomcat1的ip
        server 127.0.0.1:8083; #tomcat2的ip
    }

    server {
        listen       80;
		#域名
        server_name  10.79.10.77;

        #即访问http时重定向为https
        rewrite ^(.*)$ https://${server_name}$1 permanent;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        
    }


    # HTTPS server
    server {
	    #监听443端口
        listen       443 ssl;
		#域名  因为我的tomcat部署跟nginx同一台linux,所以此处填localhos,具体根据个人配置
        server_name  localhost;

		#SSL证书
        ssl_certificate      /usr/local/nginx/ssl/server.cer;
		#证书钥匙
        ssl_certificate_key  /usr/local/nginx/ssl/private.key;

        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers on;
        ssl_verify_client off;

        location / {
		  #转发
          proxy_pass http://tomcat; 
          # 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
          add_header Access-Control-Allow-Origin *;
          proxy_set_header X-Forwarded-Proto $scheme;
		  #此处是https访问的关键环节
          proxy_set_header X-Forwarded-Proto https;     
          proxy_redirect off;
          proxy_buffer_size 64k;
          proxy_buffers   4 32k;
          proxy_busy_buffers_size 64k;
        }
    }

}

问题:加载js,css,图片报net::ERR_CONTENT_LENGTH_MISMATCH错误

首先看nginx错误日志,看看是否有这样的错误

*60 open() "/usr/local/nginx3/proxy_temp/2/00/0000000002" failed (13: Permission denied) while reading upstream, client: xx.xxx.xx.xx, server: localhost, request: "GET /resource/js/jquery.easyui.min.js HTTP/1.1", upstream: "http://127.0.0.1:8083/resource/js/jquery.easyui.min.js", host: "xx.xx.xx.xx", referrer: "https://xx.xx.xx.xx/"

可以看到有(13: Permission denied) ,min.js等信息,这是因为nginx没有proxy_temp文件夹的权限

接下来我们给proxy_temp添加权限(我以root为例)

  1. 首先停止nginx
/usr/local/nginx/sbin/nginx -s stop

2.修改nginx.config

user  root;

3.赋予proxy_temp权限

chown -R root:root proxy_temp/

4.重启nginx

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tomcat是一个流行的Java Web服务器,用于运行和部署Java Web应用程序。下面是一些常见的Tomcat配置的想法: 1. 端口配置Tomcat默认使用8080端口。您可以在server.xml文件中修改此端口,以适应您的需求。 2. 虚拟主机配置:您可以配置Tomcat以支持多个虚拟主机。这样,您可以在同一台服务器上托管多个域名的Web应用程序。 3. 连接池配置Tomcat默认使用一个简单的连接池来处理数据库连接。您可以根据需要调整连接池的大小和其他属性,以优化数据库连接的性能。 4. SSL配置:如果您需要通过HTTPS进行安全通信,您可以配置Tomcat以支持SSL。这涉及到生成和配置SSL证书,并将其与Tomcat关联。 5. 负载均衡配置:如果您有多个Tomcat实例,您可以使用负载均衡器来分配流量。常见的负载均衡器有Apache HTTP Server和Nginx。 6. 日志配置Tomcat默认使用自己的日志系统。您可以根据需要调整日志级别,并将日志输出到不同的目标,如文件或数据库。 7. 安全性配置Tomcat提供了一些安全性配置选项,如访问控制和身份验证。您可以配置Tomcat以限制对某些资源的访问,并要求用户进行身份验证。 这些只是一些常见的配置想法,Tomcat还有许多其他配置选项,可以根据您的具体需求进行调整和优化。要了解更多信息,请参考Tomcat的官方文档或相关教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值