正向代理http
在目录/apps/conf/Nginx/vhosts
新建文件比如a.test.com,文件内容如下
- include /apps/conf/Nginx/vhosts/*.com;
重启下Nginx,本地配上server_name的host就可以实现http的正向代理
测试代理
- curl --proxy ip:80 http://a.test.com
正向代理https
因为 Nginx 不支持 CONNECT,所以无法正向代理 Https 网站。
如果访问 Https 网站,比如:https://www.baidu.com,Nginx access.log 日志如下:
“CONNECT www.baidu.com:443 HTTP/1.1” 400
Nginx使用ssl模块配置HTTPS支持
这里要使用到OpenSSL,可以Nginx的conf目录下创建证书和私钥
创建服务器私钥,命令会让你输入一个口令
- openssl genrsa -des3 -out server.key 1024
创建签名请求的证书(CSR)
- openssl req -new -key server.key -out server.csr
这个命令后会让填一些证书信息,详见参考[2]
- Country Name (2 letter code) [XX]:
- State or Province Name (full name) []:
- Locality Name (eg,city) [Default City]:
- Organization Name (eg,company) [Default Company Ltd]:
- Organizational Unit Name (eg,section) []:
- Common Name (eg,your name or your server's hostname) []:
- Email Address []:
- cp server.key server.key.org
- openssl rsa -in server.key.org -out server.key
最后标记证书使用上述私钥和CSR
- openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
下面的配置内容和正向代理http有点类似,还用上面的文件例子
然后配置下本地host就可以代理https请求了。
还可以将http请求重定向到https,例如下面配置
- server {
- listen 80;
- server_name a.test.com;
- rewrite ^(.*) https://$server_name$1 permanent;
- }
[参考]
[1] nginx使用ssl模块配置HTTPS支持
[2] Nginx 配置 SSL 证书 + 搭建 HTTPS 网站教程