Linux下 nginx+tomcat配置https的总结和遇到的坑

证书的获取略

服务器的端口443确保外界网络能够进行访问。

是否配置https:

nginx:是

tomcat:否

1.首先查看nginx是否支持SSL。

参考链接: 实战http切换成https

查看nginx支持SSL

[[email protected] bin]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.13.3
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --with-http_ssl_module
[[email protected] bin]# 

看到有--with-http_ssl_module。说明支持SSL。

此处我遇到了第一个坑:

按照我上面的参考链接增加了SSL模块的小伙伴们注意了。在执行命令

[[email protected] bin]# /usr/local/nginx/sbin/nginx -s reload

重启后,可能SSL模块并不会生效。而是要通过重启nginx主线程来重新加载配置。

[[email protected] nginx-1.13.3]# ps -ef | grep nginx
root      8802 10800  0 10:23 ?        00:00:00 nginx: worker process is shutting down
root      8803 10800  0 10:23 ?        00:00:00 nginx: worker process is shutting down
root      9992  4681  0 14:45 pts/0    00:00:00 grep --color=auto nginx
root     10800     1  0 6月29 ?       00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
[[email protected] nginx-1.13.3]# kill -QUIT 10800
[[email protected] nginx-1.13.3]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

2.nginx的配置

server {
        listen       443 ssl;
        server_name  uhear.com.cn;

        ssl on;
        ssl_certificate      cert/yourCA.pem;     #当前conf/目录下
        ssl_certificate_key  cert/yourCA.key;

        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  5m;
        #ssl_server_tokens off;
        ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers  on;

        location / {
            proxy_pass http://127.0.0.1:8080; #映射到本地的8080端口。
            proxy_redirect off;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        location /webSocket/ {       #webSocket在https下的配置
            proxy_pass http://127.0.0.1:8080;
            proxy_http_version 1.1;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;       #主要是通过下方的两个属性来升级该请求,告诉服务器,我这个是webSocket请求。
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
        }
    }

nginx proxy_set_header设置、自定义header

关于nginx代理中请求头的一些设置的具体原因和原理

在这个配置中,我遇到的坑是listen 433 ssl;和 ssl  on;

有的是只写listen 433;即可。这是由于nginx 版本的原因。最开始我也没写,但是一直不能访问,添加后,一切正常。

光是有这个是不够的,同时还要对我们的服务器进行配置。既Tomcat.

3.tomcat的配置

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

变成

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443"
               proxyPort="443" />
 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

上面的value是tomcat自带的,下面的使我们要添加的
        <Valve className="org.apache.catalina.valves.RemoteIpValve"
                  remoteIpHeader="x-forwarded-for"
                   remoteIpProxiesHeader="x-forwarded-by"
                   protocolHeader="x-forwarded-proto" />

原文地址:https://www.cnblogs.com/wbq1113/p/9357332.html

时间: 2024-11-07 00:04:55

Linux下 nginx+tomcat配置https的总结和遇到的坑的相关文章

Centos7下Nginx+Tomcat配置反向代理,使用memcached解决session一致性问题

一.session一致性问题 使用集群方案解决网站高并发问题时,就会部署多台应用服务器.当用户第一次通过客户端(如:浏览器)访问服务器时,服务器会创建对应的session, 使用Nginx反向代理,假如用户A第一次访问站点,被反向代理到服务器一处理,服务器一创建对应sessionA记录信息,用户A再次访问站点时,被反向代理到服务二处理, 而服务器二没有记录用户A的session信息,就会新创建sessionB,导致用户A之前操作丢失. 我们可以通过让多个服务器统一到同一个地方新建session和

VMware Linux 下 Nginx 安装配置 - nginx.conf 配置 [负载两个 Tomcat] (三)

首先启动Nginx 1. 转到 nginx 目录: /usr/local/nginx; 启动 nginx: /usr/local/nginx/nginx ubuntu 前要加 sudo; 关健配置 http 配置块下,一般设置在 zgip on 下: upstream localhost { #绿色对应 #ip_hash; server localhost:8090; server localhost:8080; } server / { location / { proxy_connect_t

Nginx+Tomcat配置https

Nginx + Tomcat 配置 HTTPS 1.总述 浏览器和 Nginx 之间走的 HTTPS 通讯,而 Nginx 到 Tomcat 通过 proxy_pass 走的是普通 HTTP 连接. 2.Nginx配置(nginx.conf),部分 http { #HTTPS server server { listen 443 ssl; server_name goldlone.cn; #证书地址 ssl_certificate ./1_goldlone.cn_bundle.crt; ssl_

Linux下nginx+tomcat负载均衡

1.为什么需要对tomcat服务器配置做负载均衡配置呢?[转] tomcat服务器作为一个web服务器,其并发数目在300-500之间,如果大于这个并发数,tomcat那么会出现不能响应某些请求,严重影响程序的正常工作.另外,在访问量比较大的情况下,tomcat的线程数目会不断的增加.由于tomcat自身的对内存的占有控制,当对内存的占有达到最大值时便会出现内存溢出,对程序的访问会严重超时等现象,这样必须重启服务器来释放占有的内存,对网站或者游戏来说,会造成很大的损失.所以对tomcat的负载均

nginx + tomcat配置https的两种方法

# The frist method: - Nginx and Tomcat using HTTPS: 1. nginx configuration: upstream test { server 172.16.7.30:8443 weight=1; } upstream master { server 172.16.7.31:8443 weight=1; } server { listen 80; server_name test.hbc315.com master.hbc315.com; r

VMware Linux 下 Nginx 安装配置 - Tomcat 配置 (二)

准备工作 1. 选在 /usr/local/ 下创建 softs 文件夹,通过 ftp 命令 把 apache-tomcat-7.0.26.tar.gz 拷贝进来: 2. 再在 /usr/local/ 下创建 Tomcat8080以及Tomcat8090 两个文件夹; 将 /softs/apache-tomcat-7.0.26.tar.gz 解压到 local/tomcat8080下; 定位到 softs: softs>tar -xzvf apache-tomcat-7.0.26.tar.gz

VMware Linux 下 Nginx 安装配置 (一)

资源准备 1. pcre-8.34.tar.gz: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 2. zlib-1.2.8.tar.gz:  http://zlib.net/ 搜索 .gz 下载,或 http://sourceforge.net/projects/libpng/?source=typ_redirect 3. openssl-1.0.1j.tar.gz : http://www.openssl.org/source/

eclipse下的tomcat配置https(最简单得配置https)

近期公司列出一大堆的东西,其中包括https,啥也不想说,你们是无法理解的苦逼的我的 关于https这些通道可以去百度Google其原理,不废话,自动生成秘钥,需要使用jdk自带的命令keytool.关于keytool的使用请查看:这里或者这里,我这里简单的贴一下使用方式 (1)java工具keytool 常用命令: (注:生成证书时,CN要和服务器的域名相同,如果在本地测试,则使用localhost) keytool -genkey -alias "tomcat" -keyalg &

Nginx--Windows环境下Nginx+tomcat配置(包括动静分离)

前提条件: (1)已安装好tomcat,且能成功启动 (2)已安装好Nginx,且能成功启动 接下来进行配置: (1)在Nginx的conf文件夹中新增两个文件,分别如下:(新建文件后,直接复制代码即可) 文件1:Proxy.conf proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_ad