nginx 搭建https訪問后端tomcat的http


安裝nginx

yum install -y nginx
systemctl enable nginx.service
systemctl start nginx.service

配置https訪問nginx


nginx ssl配置
1.創建服務器證書密鑰文件 server.key:
openssl genrsa -des3 -out server.key 1024
輸入密碼,確認密碼,自己隨便定義,但是要記住,后面會用到。
2.創建服務器證書的申請文件 server.csr
openssl req -new -key server.key -out server.csr
4.備份一份服務器密鑰文件
cp server.key server.key.org
5.去除文件口令
openssl rsa -in server.key.org -out server.key
6.生成證書文件server.crt
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

nginx.conf配置如下

	upstream test_tomcat{
		ip_hash;        #根據用戶訪問ip進行hash分配到server,這樣能完整保存session
		server 10.99.201.64:80;
		server 10.122.49.231:8081;
		#server 10.122.49.231:8082;
	}
	server {
    		listen 80;
    		server_name dbss.lenovo.com;
 
  		#核心代碼
    		rewrite ^(.*)$ https://${server_name}$1 permanent;
	}
	server {
		listen       443 ssl http2 default_server;
		server_name  localhost;
	
		ssl_certificate "/etc/pki/nginx/server.crt";
		ssl_certificate_key "/etc/pki/nginx/server.key";
		ssl_session_cache shared:SSL:1m;
		ssl_session_timeout  10m;
		ssl_ciphers HIGH:!aNULL:!MD5;
		ssl_prefer_server_ciphers on;
		# Load configuration files for the default server block.
		include /etc/nginx/default.d/*.conf;
	
	
		location /{
			proxy_pass http://test_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 https;     #此處是https訪問的關鍵環節
			proxy_redirect off;
		}
		#error_page 500 /500.json ;
		#location ^~ /500 {
		#root /usr/share/nginx/html ;
		#}
	
		error_page 404 /404.html;
			location = /404.html {
		}
	
		error_page 500 502 503 504 /50x.html;
			location = /50x.html {
				root         /usr/share/nginx/html;
		}
	}

  tomcat中server.xml的關鍵配置

	<!-- proxyPort一定要配置成443 -->

    <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" proxyPort="443"/>
	<Host name="localhost"  appBase=""
      unpackWARs="true" autoDeploy="true">
      <Valve className="org.apache.catalina.valves.RemoteIpValve"
      remoteIpHeader="x-forwarded-for"
      remoteIpProxiesHeader="x-forwarded-by"
      protocolHeader="x-forwarded-proto"
      />

  

tomcat中jks文件轉nginx的crt以及key文件
keytool -importkeystore -srckeystore server.jks -srcalias server -destkeystore newkeystore.p12 -deststoretype PKCS12

openssl pkcs12 -in newkeystore.p12 -nokeys -clcerts -out server-ssl.crt

openssl pkcs12 -in newkeystore.p12 -nokeys -cacerts -out gs_intermediate_ca.crt

合並crt文件
cat server-ssl.crt gs_intermediate_ca.crt >server.crt

openssl pkcs12 -nocerts -nodes -in newkeystore.p12 -out server.key

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM