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进行反向代理配置:

  1. 修改网关服务器的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
  1. 浏览器访问:http://172.17.0.2:80,此时接收到欢迎页面应该是172.17.0.3中返回的。

多个上游服务器

  1. 修改网关服务器的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
  1. 浏览器访问:http://172.17.0.2:80,此时接收到欢迎页面应该是172.17.0.3,172.17.0.4中轮流返回的。

参考

  1. 精通Nginx(第2版) Mastering NGINX,Dimitri Aivaliotis,人民邮电出版社,2017.8.1
  2. Nginx高性能Web服务器详解,苗泽,电子工业出版社,2013.10
  3. 官方文档:http://nginx.org/en/docs/http/load_balancing.html
  4. 视频教程:https://www.bilibili.com/video/BV1zJ411w7SV?p=10
原文地址:https://www.cnblogs.com/liqinglucky/p/14402844.html