使用nginx将http请求转发到远程https服务器

438 阅读1分钟

客户端使用HTTP协议连接到nginx,nginx使用HTTPS协议转发到远程服务器,要求nginx能够验证远程服务器的证书以确认对方身份的真实性。 远程服务器使用某有权CA签发证书,nginx从CA处获取CA公钥证书。 nginx配置示例如下:

server{

listen 8066;
server_name abcc;

access_log logs/abcc_access.log;
error_log logs/abcc_error.log;

proxy_ssl_trusted_certificate ../clientcrt/ca_pub_certificate.pem; #CA的公钥证书,绝对路径或相对路径均可。如设置错误,在nginx日志里会报unable to verify the first certificate的错误
proxy_ssl_verify on; #启用远程证书验证
proxy_ssl_verify_depth 2; #验证证书的深度,从远程服务器证书往下到CA证书,似乎作用不大
proxy_ssl_name remode-https-name; #CA签发给远程服务器证书中‘使用者’的COMMON NAME(CN)或“颁发给”的值,不一致的话在nginx日志里会报does not match的错误。

location / {
    proxy_pass https://ip:port; #远程服务器
}

}