Nginx配置https证书,前后端分离

9 篇文章 1 订阅
5 篇文章 0 订阅

一、前后端分离后需要使用ssl证书

        1、配置文件

#user  nobody;
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;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;



    server {
        listen       80;
        server_name  localhost;
	    rewrite ^(.*) https://$host:8081$1 permanent;#后端强制跳转https

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #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;
        }
    }



    # HTTPS server
    # 流程:对外暴露8081端口并且是ssl
    # 当访问 / 根目录时 跳转到内部访问http的前端
    # 当访问 /controller(前端请求时自己加的,在跳转时通过rewrite去除) 跳转到内部访问的后端
    # 当访问 /api 目录时代表是对外的接口
    server {
        listen 8081 ssl;
        server_name  localhost;

        ssl_certificate      /usr/local/nginx/server.crt; # 证书文件
        ssl_certificate_key  /usr/local/nginx/server.key; # 私钥

        #ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
	    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        #ssl_ciphers  HIGH:!aNULL:!MD5;
	    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers  on;

        location / {
            #root   html;
            #index  index.html index.htm;
	        proxy_pass http://127.0.0.1:8080;
        }
	    location ~/management/ {
	        proxy_pass http://127.0.0.1:8080;
	    }
	    location ~/controller/ {
	        rewrite ^/controller/(.*)$ /$1 break;
	        proxy_pass http://127.0.0.1:8002;
	    }
	    location ~/api/ {
	        proxy_pass http://127.0.0.1:8002;
	    }
    }

}

2、流程就是对外暴露nginx的SSL端口,nginx代理前端和后端的访问

3、生成https所需要的证书

先用jdk的 keytool 生成 keytool 证书 和客户端证书p12

使用openssl生成crt、key和der

# 证书文件
openssl pkcs12 -in client.p12 -nokeys -out server.crt
# 生产私钥
openssl pkcs12 -in client.p12 -nocerts -nodes -out server.key
openssl x509 -in server.crt -out server.cer -outform der


https://www.cnblogs.com/ghjbk/p/6743457.html

4、报错

nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in *****

当nginx没开启ssl模块时就会报这个错

1、进入安装目录
    cd /usr/local/nginx-1.20.1/

2、查看先走的nginx。V大写
    /usr/local/nginx/sbin/nginx -V
    没安装的时候是这样
        nginx version: nginx/1.20.1
        built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
        configure arguments:
    安装后是这样
        nginx version: nginx/1.20.1
        built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
        built with OpenSSL 1.0.2k-fips  26 Jan 2017
        TLS SNI support enabled
        configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

3、在安装目录下执行
    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

4、执行make 但不要install,不然就直接覆盖安装了

5、备份原先的nginx目录

6、把新编译的nginx换过去

7、再次执行/usr/local/nginx/sbin/nginx -V看一下





扩展
SSL性能调优
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

要在Nginx配置HTTPS前后端分离,可以按照以下步骤进行操作: 1. 进入Nginx的安装目录,并修改默认配置文件nginx.conf: ``` cd /etc/nginx vi nginx.conf ``` 2. 在nginx.conf文件中找到监听端口的配置,通常是在`http`块中的`server`块中。在配置HTTPS的server块中,添加如下配置: ``` listen 443 ssl; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; ``` 其中,`/path/to/certificate.crt`是SSL证书文件的路径,`/path/to/private.key`是私钥文件的路径。请将路径替换为实际的证书和私钥文件路径。 3. 保存并退出nginx.conf文件。 4. 重启Nginx服务,以使配置生效。 这样,Nginx就会监听443端口,并使用配置SSL证书和私钥来提供HTTPS服务。 请注意,以上步骤假设您已经有有效的SSL证书和私钥文件。如果还没有SSL证书,您可以使用自签名证书或购买第三方信任的证书。同时,还要确保证书和私钥文件的权限正确设置,并与配置文件中的路径一致。 对于前后端分离配置,您还要在后端(Spring Boot)应用程序中进行相应的HTTPS配置。具体的配置方法取决于您使用的后端框架和工具。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Nginx配置前后端分离项目(包含socket.io配置)支持Https、Springboot前后端不分离支持https](https://blog.csdn.net/Mr_Chp/article/details/111589942)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值