nginx反向代理
环境
ubuntu:bionic的docker image
docker run -it ubuntu:bionic
安装nginx
- 安装
# apt-get install nginx
- 查看版本号
# nginx -v
nginx version: nginx/1.14.0 (Ubuntu)
- 启动nginx
# nginx
//会启动一个master进程和多个worker进程
# ps -ef
root 2897 1 0 13:55 ? 00:00:00 nginx: master process /usr/sbin/nginx
www-data 2898 2897 0 13:55 ? 00:00:00 nginx: worker process
www-data 2899 2897 0 13:55 ? 00:00:00 nginx: worker process
www-data 2900 2897 0 13:55 ? 00:00:00 nginx: worker process
www-data 2901 2897 0 13:55 ? 00:00:00 nginx: worker process
- 重新加载配置
# nginx -s reload
- 停止
# nginx -s stop
文件位置
# find / -name nginx
/var/log/nginx 日志文件目录
/usr/share/nginx
/usr/sbin/nginx 可执行文件
/etc/nginx/nginx.conf 配置文件目录
Nginx作为反向代理
反向代理就是将nginx作为网关服务器,背后有一个或者多个上游服务器。Http请求由网关服务器转发给上游服务器。
单个上游服务器
nginx进行反向代理配置:
- 修改网关服务器的nginx.conf
http {
server {
listen 80;
server_name 172.17.0.2; <<< 网关服务器的ip
location / {
proxy_pass http://172.17.0.3:80; <<< 上游服务器的ip
}
}
}
这个配置意思很清晰,就是用网关服务器ip对外接收http请求,然后转发给上游服务器ip。
2. 启动上游服务器nginx。为了区分,可以修改上游服务器的nginx欢迎页面
//欢迎页面的html文件路径
/var/www/html/index.nginx-debian.html
- 浏览器访问:http://172.17.0.2:80,此时接收到欢迎页面应该是172.17.0.3中返回的。
多个上游服务器
- 修改网关服务器的nginx.conf
http {
upstream myserver { <<< 上游服务器的组
server 172.17.0.3:80; <<< 上游服务器的ip
server 172.17.0.4:80 weight=3; <<< 还可以加修改权重
}
server {
listen 80;
server_name 172.17.0.2; <<< 网关服务器的ip
location / {
proxy_pass http://myserver; <<< 上游服务器的组
}
}
}
nginx可以通过负载均衡在上游服务器的组内轮询各个ip。
2. 启动多个上游服务器nginx。为了区分,可以修改上游服务器的nginx欢迎页面
//欢迎页面的html文件路径
/var/www/html/index.nginx-debian.html
- 浏览器访问:http://172.17.0.2:80,此时接收到欢迎页面应该是172.17.0.3,172.17.0.4中轮流返回的。
参考
- 精通Nginx(第2版) Mastering NGINX,Dimitri Aivaliotis,人民邮电出版社,2017.8.1
- Nginx高性能Web服务器详解,苗泽,电子工业出版社,2013.10
- 官方文档:http://nginx.org/en/docs/http/load_balancing.html
- 视频教程:https://www.bilibili.com/video/BV1zJ411w7SV?p=10