目录
nginx反向代理配置文件
首先,先阅读nginx反向代理的配置的文件:(注意3处标红的位置)
#运行用户
#user nobody;
#启动进程 通常设置与cpu数量相同
worker_processes 1;
#错误日志路径配置
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#记录当前nginx启动的历史进程PID
#pid logs/nginx.pid;#工作模式及连接数上限,单个后台worker 进程的最大并发连接数
events {
worker_connections 1024;
}#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
include mime.types;
default_type application/octet-stream;
#日志格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;
#上面已经有描述了
sendfile on;
#tcp_nopush on;
#链接超时时间
#keepalive_timeout 0;
keepalive_timeout 65;#gzip on;
#设置代理的服务器列表
upstream hellonginx{
server 127.0.0.1:8080 ;
}
#http服务器
server {
#监听端口80 也就是输入该虚拟机ip就直接访问的端口
listen 80;
#定义域名访问 与windows中配置的虚拟域名对应
server_name nginx.test.com;
#编码格式
charset utf-8;
#代理配置超时、头信息等参数 可以不配置
proxy_connect_timeout 180;
proxy_send_timeout 180;
proxy_read_timeout 180;
proxy_set_header Host $host;
proxy_set_header X-Forwarder-For $remote_addr;
#access_log logs/host.access.log main;
#
#反向代理路径(和upstream绑定)
location / {
proxy_pass http://hellonginx;
}#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
#错误页面配置 可以不配置
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
流程详解:
访问:http://nginx.test.com/*
1、当HTTP请求交给Nginx处理时,首先Nginx会取出header头中的Host (此处也就是 nginx.test.com),然后将其与所有的配置文件中的每个server段中的server_name进行匹配,以此决定到底有哪个server块来处理这个请求。(当然有时也可能一个Host与多个server块中的server_name都匹配,这时会根据匹配的优先级选择实际处理的server块,优先级这里就不再细说。)
2、 此时我们可以看到HTTP请求匹配到了server_name nginx.test.com;,这样接下来nginx就会在当前server块中匹配到 location / 。
3、接下来继续由nginx处理可以看到 location / { proxy_pass http://hellonginx; } ; 这就是进行反向代理处理,这个例子中使用的是nginx的upstream模块进行反向代理实现。
4、通过proxy_pass http://hellonginx; 中的 hellonginx 可以找到对应的upstream块,然后,可以根据其中的 server 127.0.0.1:8080 ;再次进行代理请求到目标服务器。