Nginx

安装 

依赖包

make 、zlib 、zlib-devel 、gcc-c++ 、libtool  、openssl 、openssl-devel 、pcre 、pcre-devel

有yum源可以直接使用yum install 命令安装

#yum  install  -y make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel pcre pcre-devel

编译安装

解压

#tar xzvf nginx-1.22.0.tar.gz

预编译

./configure --prefix=/hdfs/project/nginx --user=nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_realip_module --with-stream


编译参数

--prefix=/hdfs/project/nginx                                        #指定安装路径
--user=nginx                                                              #指定安装用户
--with-http_ssl_module                                              #启用构建将HTTPS协议支持添加到HTTP服务器的模块的功能,OpenSSL库
--with-http_gzip_static_module                                 #支持发送.gz扩展名为的预压缩文件
--with-http_stub_status_module                                #提供对基本状态信息的访问
--with-http_realip_module                                          #将客户端地址更改为在指定的标头字段中发送的地址
--with-stream                                                              #支持构建用于通用TCP / UDP代理和负载平衡的流模块

--with-stream_ssl_module                                        #流模块添加 SSL / TLS协议支持
--with-stream_realip_module                                    #将客户端地址更改为PROXY协议标头中发送的地址

 

编译安装

#make  &&  make install

环境变量

/etc/profile.d/nginx.sh

#vim /etc/profile.d/nginx.sh

        NGINX_HOME=/hdfs/project/nginx
        PATH=$NGINX_HOME/sbin:$PATH

#chmod +x /etc/profile.d/nginx.sh

#source /etc/profile.d/nginx.sh

配置

1,全局块

        影响全局指令。PID 进程文件路径,日志存放文件路径,配置文件引入,生成 worker process 数

2,events 块

        影响服务器与用户的网络连接。每个进程的最大连接数,处理请求连接的事件驱动模型

3,http 块

        多嵌套 server ,配置代理,缓存,日志格式定义,sendfile 传输文件,连接超时时间,单连接请求数

4,stream 块

        应用层实现四层(传输层)的转发,需要与两端建立起socket连接,然后两端的数据收发进行代理转发。和 http 块同级

5,server 块

        配置虚拟主机的相关参数

6,location 块

        配置请求的路由,以及各种页面的处理情况

1,以 = 开头,表示精确匹配;如只匹配根目录结尾的请求,后面不能带任何字符串。
2,以^~ 开头,表示uri以某个常规字符串开头,不是正则匹配
3,以~ 开头,表示区分大小写的正则匹配;
4,以~* 开头,表示不区分大小写的正则匹配
5,以/ 开头,通用匹配, 如果没有其它匹配,任何请求都会匹配到

先匹配普通,再匹配正则

(location =) > (location 完整路径) > (location ^~ 路径) > (location . * 正则顺序) > (location 部分起始路径) > (/)

当 location 为正则匹配且内部有 proxy_pass 指令时,proxy_pass 的指令值中不能包含无变量的字符串。修饰语“^~”不受该规则限制

location ~ /images { 
    proxy_pass http://127.0.0.1:8080;                                 # 正确的指令值
    proxy_pass http://127.0.0.1:8080$request_uri;             # 正确的指令值
    proxy_pass http://127.0.0.1:8080/image$request_uri; # 正确的指令值
    proxy_pass http://127.0.0.1:8080/;                               # 错误的指令值

例1:= 精确匹配,主机后面不带任何字符串

精确匹配 / ,主机名后面不能带任何字符串

location = / {

        proxy_pass  http://127.0.0.1:8083;                        ###不带字符串

}

例2:完整路径

匹配任何以 /dba/ 开头的地址,匹配符合以后,还要继续往下搜索
注:只有后面的正则表达式没有匹配到时,这一条才会采用这一条

location /dba/ {
        proxy_pass http://:127.0.0.1:8083/;
}

http://xxx.xxx.com/dba/xxx --> http://localhost:8083/xxx. 转发不包含url前缀dba

例3:^~ 常规字符串开头匹配.

匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条

location ^~ /images/ {
        proxy_pass http://:127.0.0.1:8083;
}

http://xxx.xxx.com/images/xxx --> http://localhost:8083/images/xxx. 转发包含了url的前缀images

例4:~ 区分大小写的正则匹配

location ~ \.(gif|jpg|jpeg)$ {

        proxy_pass http://:127.0.0.1:8083;

}

例5:~* 不区分大小写的正则匹配

location ~* \.(gif|jpg|jpeg)$ {

        proxy_pass http://:127.0.0.1:8083;

}

例6:/ 通用匹配

只有其他不符合要求才能匹配到;将是最后匹配到的,匹配度最低

location / {

        proxy_pass http://tomcat_servers;

}

HTTP应用层配置

worker_processes  auto;                        ###工作进程的个数,一般与计算机的 cpu 核数一致
worker_rlimit_nofile 65535;                        ###指定进程可以打开的最大描述符,需要提前设置nginx启动用户的最大打开系统文件数

events {
    worker_connections  1024;            ###单个进程最大连接数(最大连接数=连接数*进程数)
    use epoll;            ###使用epoll的I/O 模型。linux建议epoll,FreeBSD建议采用kqueue,window下不指定
}

http {
    include       mime.types;             ###文件扩展名与文件类型映射表
    default_type  application/octet-stream;            ###默认文件类型
    charset utf-8;            ###默认编码

    log_format  real_ip  '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http_x_forwarded_for"';                        ###变更日志格式
    
    server_tokens off;            ###隐藏版本号
    
    sendfile on;            ###开启高效文件传输模式,sendfile 指令指定 nginx 是否调用 sendfile 函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘 IO 重负载应用,可设置为 off,以平衡磁盘与网络 I/O 处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成 off。
    tcp_nopush on;            ###此选项允许或禁止使用socke的 TCP_CORK 的选项,此选项仅在使用 sendfile 的时候使用
    tcp_nodelay    on;            ###防止网络阻塞
    
    keepalive_timeout  120;            ###长连接超时时间,单位是秒
    client_header_buffer_size 32k;            ###客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE 取得
    client_body_buffer_size 1024k;            ###Nginx分配给请求数据的Buffer大小,如果请求的数据小于client_body_buffer_size直接将数据先在内存中存储。如果请求的值大于client_body_buffer_size小于client_max_body_size,就会将数据先存储到临时文件中
    client_max_body_size 512m;            ###client_max_body_size 默认 1M,表示 客户端请求服务器最大允许大小,在“Content-Length”请求头中指定。如果请求的正文数据大于client_max_body_size,HTTP协议会报错 413 Request Entity Too Large。就是说如果请求的正文大于client_max_body_size,一定是失败的。如果需要上传大文件,一定要修改该值
    large_client_header_buffers 4 128k;            ###客户请求头缓冲大小。nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取
    
     gzip  on;            ###启用 Gizp 压缩
     proxy_request_buffering off;            ###启用或禁用客户端请求正文的缓冲
     
    ###FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。
    fastcgi_connect_timeout 300;            ###指定连接到后端FastCGI的超时时间
    fastcgi_send_timeout 300;            ###指定向FastCGI传送请求的超时时间,这个值是已经完成两次握手后向FastCGI传送请求的超时时间
    fastcgi_read_timeout 300;            ###指定接收FastCGI应答的超时时间,这个值是已经完成两次握手后接收FastCGI应答的超时时间
    
    ###反向代理的一些配置
    proxy_connect_timeout 300;            ###nginx跟后端服务器连接超时时间(代理连接超时)
    proxy_send_timeout 300;            ###后端服务器数据回传时间(代理发送超时)
    proxy_read_timeout 300;            ###连接成功后,后端服务器响应时间(代理接收超时)
    proxy_buffer_size 32k;            ###设置代理服务器(nginx)保存用户头信息的缓冲区大小
    proxy_buffers    4 32k;            ###proxy_buffers缓冲区,网页平均在32k以下的设置
    proxy_busy_buffers_size 54k;            ###高负荷下缓冲大小(proxy_buffers*2)
    proxy_temp_file_write_size 2m;            ###设置在写入proxy_temp_path时数据的大小,预防一个工作进程在传递文件时阻塞太长
    proxy_ignore_client_abort on; #proxy_ignore_client_abort:是否开启proxy忽略客户端中断。即如果此项设置为on开启,则服务器会忽略客户端中断,一直等着代理服务执行返回。并且如果执行没有发生错误,记录的日志是200日志。如果超时则会记录504。如果设置为off,则客户端中断后服务器端nginx立即记录499日志,但要注意,此时代理端的PHP程序会依然继续执行。nginx的proxy_ignore_client_abort默认是关闭的,即请求过程中如果客户端端主动关闭请求或者客户端网络断掉,那么Nginx会记录499。所以如果不想看到499报错,可以开启。这样来说,499错误并不是一个问题,如果出现了大量的499的话,需要考虑为什么发生了这么多的客户端中断的问题
    
    include /hdfs/project/nginx/conf/conf.d/*.conf;            ###有此选项的时候启动nginx它会去conf.d/ 下面读取后缀为.conf的文件

    upstream tomcat_servers {
        ip_hash;
        server 192.168.2.14:8080 weight=1 max_fails=3 fail_timeout=30s;
        server 192.168.2.15:8080 weight=1 max_fails=3 fail_timeout=30s;
    }
    ###1、轮询;    2、weight权重;    3、ip_hash;    4、fair响应时间短优先分配;
    ###1、down表示单前的server暂时不参与负载;    2、max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误;    3、fail_timeout:max_fails次失败后,暂停的时间;    4、backup:backup 不能和ip_hash一起使用,backup 参数是指当所有非备机都宕机或者不可用的情况下,就只能使用带backup标准的备机

    server {
        listen 80;            ###设置监听端口
        server_name www.filesec.com;            ###配置访问域名
        access_log /usr/local/nginx/logs/tomcat_servers.log real_ip;            ###定义日志存放路径以及格式
            location ~ .* {
                proxy_pass http://tomcat_servers;
                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;
                ###以上三行为跨域设置,目的是将代理服务器收到的用户的信息传到真实服务器


                proxy_set_header X-Forwarded-Proto $scheme;
            }

            location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
            {
                proxy_pass http://tomcat_servers;
            }

            location ~ .*\.(js|css)?$
            {
                proxy_pass http://tomcat_servers;
            }

    ###php配置

            location ~ \.php$ {
                    root           /hdfs/project/xinhu;
                    fastcgi_pass   127.0.0.1:9000;
                    fastcgi_index  index.php;
                    #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                    include        fastcgi_params;
            }

    ###错误页面
            error_page  404 /404.html;
            error_page  500 502 503 504 /50x.html;
            location = /404.html {
                root  html;
            }
            location = /50x.html {
                root  html;
            }

    }
}

TCP传输层配置

user  nginx;
worker_processes  auto;

error_log  logs/error.log;

pid        nginx.pid;

worker_rlimit_nofile  51200;

events {
    use epoll;
    worker_connections  10240;
}


stream  {

    log_format proxy '$proxy_protocol_addr $remote_addr [$time_local] '
                 '$protocol $status $bytes_sent $bytes_received '
                 '$session_time "$upstream_addr" '
                 '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';

    upstream  control{
        server  xxx:8100  weight=10;
        server  xxx:8100  weight=10;
    }

    server {
        listen       10050;
        proxy_pass  xxx:8910;
        access_log  logs/access-test.log proxy;
#        proxy_protocol on;
    }

    server {
        listen       10060;
        proxy_pass  xxx:8909;
        access_log  logs/access-test.log real_ip;
#        proxy_protocol on;
    }

    server {
        listen       10070;
        access_log  logs/access-test.log proxy;
        proxy_pass  xxx:8910;
#        proxy_protocol on;
        proxy_timeout 20;            #超时时间
    }

    server {
        listen       10080;
        access_log  logs/access-test.log proxy;
        proxy_pass  xxx:8909;
#        proxy_protocol on;
    }

    server {
        listen       10090;
        access_log  logs/access-test.log proxy;
        proxy_pass  control;
#        proxy_protocol on;
    }
}

平滑升级

查看nginx版本及模块信息

#nginx -V

解压安装高版本

#tar  xzvf nginx-xxx.tar.gz

#cd  nginx-xxx

重新编译(增加新模块)

#./configure  --xxx  --xxx

#make

千万不要make install

备份之前的nginx

#mv /hdfs/project/nginx/sbin/nginx  /hdfs/project/nginx/sbin/nginx_bak

拷贝新编译的nginx

#cp nginx /hdfs/project/nginx/sbin/

国密

有证书

国密OpenSSL

下载链接:https://www.gmssl.cn/gmssl/down/gmssl_openssl_1.1_b7.tar.gz

解压

#tar xzfm gmssl_openssl_1.1_bxx.tar.gz -C /usr/local/

Nginx

解压

#tar  xzvf  nginx-xxx.tar.gz

conf文件修改

auto/lib/openssl/conf

将全部$OPENSSL/.openssl/修改为$OPENSSL/并保存

预编译

    ./configure  --prefix=/usr/local/nginx-gmssl \

    --with-http_ssl_module \

    --with-http_realip_module \

    --with-http_addition_module \

    --with-http_sub_module \

    --with-http_dav_module \

    --with-http_flv_module \

    --with-http_mp4_module \

    --with-http_gunzip_module \

    --with-http_gzip_static_module \

    --with-http_random_index_module \

    --with-http_secure_link_module \

    --with-http_stub_status_module \

    --with-http_auth_request_module \

    --with-threads \

    --with-stream \

    --with-stream_ssl_module \

    --with-http_slice_module \

    --with-mail \

    --with-mail_ssl_module \

    --with-file-aio \

    --with-http_v2_module \

    --with-openssl="/usr/local/gmssl" \

    --with-cc-opt="-I/usr/local/gmssl/include" \

    --with-ld-opt="-lm"

#

    ./configure  --prefix=/usr/local/nginx-gmssl --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-http_v2_module --with-openssl="/usr/local/gmssl" --with-cc-opt="-I/usr/local/gmssl/include"  --with-ld-opt="-lm"

安装 

#make install

无证书

使用gmssl创建证书测试验证

GmSSL

下载链接:https://github.com/guanzhi/GmSSL

解压

#unzip GmSSL-master.zip  -d /usr/local/

v2版本编译安装,建议选用此版本

#cd /usr/local/GmSSL-master/

#./config --prefix=/usr/local/gmssl

#make && make install

master3.0版本编译安装,采用cmake构建 

#cd /usr/local/GmSSL-master/

#mkdir build

#cmake  ..                                                                #需要安装cmake(version3.9或更高)

#make

#./config --prefix=/usr/local/gmssl

#make && make install

cmake下载地址:Index of /files 

安装步骤

#tar  xzvf

#./configure

#make && make install

gmssl-make编译报错

/usr/local/gmssl_cmake/GmSSL-master/src/sm9_alg.c:2240:11: 错误:‘i’重声明为没有外部链接

/usr/local/gmssl_cmake/GmSSL-master/src/sm9_alg.c:2240:2: 错误:只允许在 C99 模式下使用‘for’循环初始化声明

修改对应的文件

标记有行号

/usr/local/gmssl_cmake/GmSSL-master/src/sm9_alg.c

for (int i = 0; i < 10; i++) 

改为

int i;

for (i= 0;i < 10; i++) 

for (int j = 0; j < 4; j++) 

改为

int j;
for (j= 0;j< 4;J++) 
 

查看版本,验证是否安装成功

#/usr/local/gmssl/bin/gmssl version

报错

bin/gmssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

原因分析

openssl库的位置不正确导致

解决方法

1.首先确认gmssl的安装路径,我的是/usr/local/gmssl

2.应该将gmssl目录下的lib下的对应文件建立软连接

3.确认以上两点后,执行下面的命令

#ln -s /usr/local/gmssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1

#ln -s /usr/local/gmssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

Nginx

编译模块

    ./configure  --prefix=/usr/local/nginx-gmssl \

    --with-http_ssl_module \

    --with-http_realip_module \

    --with-http_addition_module \

    --with-http_sub_module \

    --with-http_dav_module \

    --with-http_flv_module \

    --with-http_mp4_module \

    --with-http_gunzip_module \

    --with-http_gzip_static_module \

    --with-http_random_index_module \

    --with-http_secure_link_module \

    --with-http_stub_status_module \

    --with-http_auth_request_module \

    --with-threads \

    --with-stream \

    --with-stream_ssl_module \

    --with-http_slice_module \

    --with-mail \

    --with-mail_ssl_module \

    --with-file-aio \

    --with-http_v2_module \

    --with-openssl="/usr/local/gmssl"

sm2证书

以下命令在哪个目录执行的就会生成到哪个目录

cd  /usr/local/gmssl/ssl

CA证书

#/usr/local/gmssl/bin/gmssl ecparam -genkey -name sm2p256v1 -noout -out root.key

#/usr/local/gmssl/bin/gmssl req -new -key root.key -out root.req -subj "/C=CN/ST=GuangDong/L=GZ/O=HDLH/CN=root"

#/usr/local/gmssl/bin/gmssl x509 -req -days 3650 -sm3 -in root.req -extfile openssl.cnf -extensions v3_ca -signkey root.key -out root.crt

Server签名证书

#/usr/local/gmssl/bin/gmssl ecparam -name sm2p256v1 -genkey -noout -out server.key

#/usr/local/gmssl/bin/gmssl req -new -SM3 -key server.key -out server.csr -subj "/C=CN/ST=GuangDong/L=GZ/O=HDLH/CN=server"

#/usr/local/gmssl/bin/gmssl x509 -req -SM3 -days 3650 -in server.csr -extfile openssl.cnf -extensions v3_req -CA root.crt -CAkey root.key -set_serial 1000000001 -out server.crt

Server加密证书

#/usr/local/gmssl/bin/gmssl ecparam -name sm2p256v1 -genkey -noout -out server_en.key

#/usr/local/gmssl/bin/gmssl req -new -SM3 -key server_en.key -out server1.csr -subj "/C=CN/ST=GuangDong/L=GZ/O=HDLH/CN=server_en"

#/usr/local/gmssl/bin/gmssl x509 -req -SM3 -days 3650 -in server1.csr -extfile openssl.cnf -extensions v3enc_req -CA root.crt -CAkey root.key -set_serial 1000002001 -out server_en.crt

客户端签名证书

#/usr/local/gmssl/bin/gmssl ecparam -genkey -name sm2p256v1 -noout -out client.key

#/usr/local/gmssl/bin/gmssl req -new -key client.key -out client.req -subj "/C=CN/ST=GuangDong/L=GZ/O=HDLH/CN=client"

#/usr/local/gmssl/bin/gmssl x509 -req -SM3 -days 3650 -in client.req -extfile openssl.cnf -extensions v3_req -CA root.crt -CAkey root.key -CAcreateserial  -out client.crt

客户端加密证书

#/usr/local/gmssl/bin/gmssl ecparam -genkey -name sm2p256v1 -noout -out client_en.key

#/usr/local/gmssl/bin/gmssl req -new -key client_en.key -out client_en.req -subj "/C=CN/ST=GuangDong/L=GZ/O=HDLH/CN=client"

#/usr/local/gmssl/bin/gmssl x509 -req -SM3 -days 3650 -in client_en.req -CA root.crt -extfile openssl.cnf -extensions v3enc_req -CAkey root.key -CAcreateserial  -out client_en.crt

配置文件

证书排序:签名在前,加密后,CA证书最后

server {

        listen       443 ssl;

        server_name  localhost;

        ssl_protocols        TLSv1.1 TLSv1.2 TLSv1.3 GMTLS;

        ssl_certificate      ../gmssl/server.crt;                                #server签名证书

        ssl_certificate_key  ../gmssl/server.key;

        ssl_certificate      ../gmssl/server_en.crt;                               #server加密证书

        ssl_certificate_key  ../gmssl/server_en.key;

        ssl_certificate      ../gmssl/root.crt;                                #CA证书

        ssl_certificate_key  ../gmssl/root.key;

        ssl_certificate      ../ssl/server.crt;

        ssl_certificate_key  ../ssl/server.key;

        ssl_session_cache    shared:SSL:1m;

        ssl_session_timeout  5m;          

              ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-SM2-WITH-SMS4-GCM-SM3:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-SM2-WITH-SMS4-SHA256:ECDHE-SM2-WITH-SMS4-SM3:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:RSA-PSK-AES256-GCM-SHA384:DHE-PSK-AES256-GCM-SHA384:RSA-PSK-CHACHA20-POLY1305:DHE-PSK-CHACHA20-POLY1305:ECDHE-PSK-CHACHA20-POLY1305:AES256-GCM-SHA384:PSK-AES256-GCM-SHA384:PSK-CHACHA20-POLY1305:RSA-PSK-AES128-GCM-SHA256:DHE-PSK-AES128-GCM-SHA256:AES128-GCM-SHA256:PSK-AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:ECDHE-PSK-AES256-CBC-SHA384:ECDHE-PSK-AES256-CBC-SHA:SRP-RSA-AES-256-CBC-SHA:SRP-AES-256-CBC-SHA:RSA-PSK-AES256-CBC-SHA384:DHE-PSK-AES256-CBC-SHA384:RSA-PSK-AES256-CBC-SHA:DHE-PSK-AES256-CBC-SHA:AES256-SHA:PSK-AES256-CBC-SHA384:PSK-AES256-CBC-SHA:ECDHE-PSK-AES128-CBC-SHA256:ECDHE-PSK-AES128-CBC-SHA:SRP-RSA-AES-128-CBC-SHA:SRP-AES-128-CBC-SHA:RSA-PSK-AES128-CBC-SHA256:DHE-PSK-AES128-CBC-SHA256:RSA-PSK-AES128-CBC-SHA:DHE-PSK-AES128-CBC-SHA:SM9-WITH-SMS4-SM3:SM9DHE-WITH-SMS4-SM3:SM2-WITH-SMS4-SM3:SM2DHE-WITH-SMS4-SM3:AES128-SHA:RSA-WITH-SMS4-SHA1:RSA-WITH-SMS4-SM3:PSK-AES128-CBC-SHA256:PSK-AES128-CBC-SHA;

        # ssl_ciphers  HIGH:!aNULL:!MD5;

        ssl_prefer_server_ciphers  on;

        location / {

            root   html;

            index  index.html index.htm;

        }

    }

启动验证

#nginx -t

#nginx

其他参考内容

Nginx作为反向代理到Tomcat应用时,session丢失的问题

1、如果只是host、端口转换,则session不会丢失。例如:

​      location /testwx {
             proxy_pass    http://127.0.0.1:8080/testwx;
      }

通过浏览器访问 http://127.0.0.1/testwx时,浏览器的cookie内有jsessionid。再次访问时,浏览器会发送当前的cookie。


2、如果路径也变化了,则需要设置cookie的路径转换,nginx.conf的配置如下

      location /testwx {
             proxy_pass    http://127.0.0.1:8080/wx;
             proxy_cookie_path  /wx /testwx;#这里的路径要注意对应关系
      }

可以将wx的cookie输出到testwx上,Tomcat的session正常了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值