正向代理http
在目录/apps/conf/Nginx/vhosts
新建文件比如a.test.com,文件内容如下
server
{
listen 80;
server_name a.test.com ;
location /
{
expires 302400s;
proxy_pass url; //自定义要代理的使用http协议的url
}
access_log /apps/logs/Nginx/a.test.com.log log_access;
}
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有点类似,还用上面的文件例子
server
{
listen 443;
server_name a.test.com;
ssl on;
ssl_certificate /apps/conf/Nginx/conf/server.crt;
ssl_certificate_key /apps/conf/Nginx/conf/server.key;
location /
{
expires 302400s;
proxy_pass https://XXXX; //这里可以是http或https
}
access_log /apps/logs/Nginx/a.test.com.log log_access;
}
然后配置下本地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 网站教程