如何用 Nginx 配置透明 HTTP 和 HTTPS 代理

2024-12-28 00:54:23
推荐回答(3个)
回答1:

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
1、首先需要配置站点的WoSign SSl证书

打开Nginx安装目录下conf目录中的nginx.conf文件 找到
# HTTPS server
#
#server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
将其修改为 :
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate sslkey/public.cer; (证书公钥)
ssl_certificate_key sslkey/private.key; (证书私钥)
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
保存退出,并重启Nginx。
通过https方式访问您的站点,测试站点证书的安装配置。

3、配置强身份认证
1、 修改nginx.conf文件
如果要求客户采用客户证书认证方式,可以在原来的配置下增加如下参数:
server {
......
......
......
ssl_verify_client on 要求SSL客户证书认证。
ssl_client_certificate trust.cer 签发客户证书的CA证书,用来验证客户证书。
ssl_verify_depth 3 SSL客户证书认证链长度。
}
4、重启站点使用您的客户端证书进行登陆测试

回答2:

HTTP代理存在两种。
一种是基于RFC 7230 以及其他相关RFC文档中描述的普通代理,代理服务器充当的是一个中间的组件,通过在请求URI设置的对应authority来指定目标服务器。
另一种是基于RFC 2817实现的TCP隧道代理。与上面的区别就在于“TCP隧道”,这种代理可以以HTTP协议的方式来实现理论上任意TCP之上的应用层协议代理,两端之间的通讯都是在HTTP的body部分完成的。因此就可以完成基于TLS的HTTPS通讯,被加密过的数据直接在body中传输。
Nginx不支持第二种代理,因此不能完成https代理。Nginx的作者对于这个功能有明确的回复,表示不会在近期实现,并且推荐使用Squid。

回答3:

您说的是跳转吧?