Nginx 的其中一个用途是做 HTTP 反向代理,下面简单介绍 Nginx 作为反向代理服务器的方法。
场景描述:
- 访问服务器上的README.md文件, http://192.168.6.6/readme.md, 服务器进行反向代理,从https://github.com/yidao620c/scrapy-cookbook/blob/master/README.md获取页面内容。
- 访问服务的8080端口,服务器进行反向代理, 跳转到https://163.com
1. 配置https
1. 安装openssl相关软件
[root@lotus nginx]¥ yum -y install openssl*
2. 颁发证书给自己
[root@lotus nginx]$ openssl genrsa -des3 -out server.key 1024 # 用于生成rsa私钥文件
[root@lotus nginx]$ openssl req -new -key server.key -out server.csr # openssl req 用于生成证书请求
[root@lotus nginx]$ openssl rsa -in server.key -out server_nopwd.key #利用openssl进行RSA为公钥加密
[root@lotus nginx]$ openssl x509 -req -days 365 -in server.csr -signkey server_nopwd.key -out server.crt
[root@lotus nginx]$ mv server.crt server_nopwd.key /usr/local/nginx/conf/
2. 在 conf.d目录下新建 reve.conf文件
# 添加上面的https
server {
listen 443 ssl;
ssl_certificate server.crt;
ssl_certificate_key server_nopwd.key;
}
server {
listen 8080;
# 访问8080端口,跳转到网易首页
location / {
proxy_pass https://163.com;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 访问 8080:/readme.md 从github上获取相应的文件
location /readme.md {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://github.com/yidao620c/scrapy-cookbook/blob/master/README.md;
}
}
3. 重新启动nginx
[root@lotus nginx]$ ./sbin/nginx -s reload