Nginx自带的有一个stream模块,可以用于反向代理转发TCP连接的流量,并且我们可以配合使用开源的OpenSSL生成证书自签名证书来加密流量。 首先我们生成证书:
# 生成key文件:
openssl genrsa -des3 -out server.key 4096
# 生成csr文件:
openssl req -new -key server.key -out server.csr
# 生成crt文件:
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
# 转换pem文件:
openssl x509 -in server.crt -out cert.pem
# 转换key.pem:
openssl x509 -in server.key -out key.pem
然后我们在Nginx中添加相关的配置:
找到相关的目录:/etc/nginx/conf.d随便新建一个文件名:test.conf。
编辑内容:
stream {
# 这里是不进行ssl加密的转发
server {
listen 12345;
proxy_pass test.com:12345;
}
upstream test {
server test.com:12346;
}
server {
listen 12346 ssl;
proxy_pass test;
ssl_certificate crts/server.crt;
ssl_certificate_key crts/server.key;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 24h;
ssl_handshake_timeout 30s;
# 若转发的目标服务器是ssl这里需要进行配置
proxy_ssl on;
}
}
reload Nginx配置,若出现SSL加密证书相关的错误可以尝试:
mv server.key server.key.org
openssl rsa -in server.key.org -out server.key
再进行reload。