1. 程式人生 > >nginx學習筆記(一) 用nginx實現本地https請求轉http請求

nginx學習筆記(一) 用nginx實現本地https請求轉http請求

error erro 需要 ror har file key media nginx代理

接到項目需求需要將一些https請求利用nginx代理到http接口上,因此要在本地上搭環境進行測試,現在將該過程記錄一下。

生成證書

1. 使用openssl生成密鑰privkey.pem:

openssl genrsa -out privkey.pem 1024/2038

2. 使用密鑰生成證書server.pem:

openssl req -new -x509 -key privkey.pem -out server.pem -days 365

證書信息可以隨便填或者留空,只有Common Name要根據你的域名填寫。如xxx.com,或使用*.xxx.com匹配二級域名。

配置ngnix

由於我本地的Spring boot項目是跑在8080端口的,因此在ngnix配置上我還做了一層80到8080端口到轉換。

完整ngnix配置如下。

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

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server { 
        listen       80;    
        server_name  a.com;
        location / {
            proxy_pass http://localhost:8080;
        }
    }


    # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  a.com;
    #證書位置
        ssl_certificate      /data/server.pem; # 路徑為證書生成的路徑
        ssl_certificate_key  /data/privkey.pem; # 路徑為證書生成的路徑

    #    ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        #協議配置
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;         
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

        # 轉發到http
        location / {
           proxy_pass http://a.com;
        }
    }
    include servers/*;
}
    

其中a.com是我在本地hosts文件上做的一個本地映射(127.0.0.1 a.com)

驗證配置

重啟ngnix驗證配置是否成功

sudo nginx -t && sudo nginx -s reload

之前是在網上看到該命令,但實際中在我本地該命令並未生效。如果該命令不生效就先把nginx關閉後再重啟。

nginx -s stop
nginx

一點小坑

配置完成之後在訪問同一個https請求時總是會在奇數次(第一次,第三次……)報404,偶數次才成功。後面經過排查發現,在已經配置了80轉換到8080端口時還做了對8080端口的一些配置,如下圖。將該配置刪除後即可。

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

nginx學習筆記(一) 用nginx實現本地https請求轉http請求