代理 http 服务
在目录/apps/conf/nginx/vhosts
新建文件比如a.test.com,文件内容如下
server
{
listen 80;
server_name a.test.com ;
location /
{
expires 302400s;
proxy_pass url; //自定义要真正访问的HTTP服务
}
access_log /apps/logs/nginx/a.test.com.log log_access;
}
然后在nginx.conf的http块中添加
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 []:
在加载SSL支持的Nginx并使用上述私钥时除去必须的口令
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就可以了。
还可以将http请求重定向到https,例如下面配置
server {
listen 80;
server_name a.test.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
[参考资料]
[1] nginx使用ssl模块配置HTTPS支持
[2] Nginx 配置 SSL 证书 + 搭建 HTTPS 网站教程