upstream webserver { #负载调度算法,常用的4种调度算法如下 #轮询(默认),根据Nginx配置文件中后端服务器的顺序,依次把客户端请求分发到后端服务器 #ip_hash,用作保持会话,来自同一个客户端IP的请求都会发往同一台后端,除非该后端不可用。需注意Nginx只取IP前三段参与hash计算,因此同一网段(C段)不同IP还是会负载到同一后端 #least_conn,请求会被转发到连接数最少的服务器上 #weight,加权负载均衡,这种方式下,可以通过提升weight值把请求更多地分发到我们希望的服务器上,如某后端地址配置weight=2,则相当于配置了2个该后端地址 least_conn; #后端服务配置,max_fails和fail_timeout是健康检查配置,在fail_timeout(单位秒)设置的时间周期内如请求某后端Server失败次数达到max_fails次,那么就将该Server节点标记为不可用,并等待下一个fail_timeout周期再去请求,判断后端是否恢复 server 127.0.0.1:8001 weight=2 max_fails=3 fail_timeout=3; server 127.0.0.1:8002 weight=1 max_fails=3 fail_timeout=3; } proxy_cache_path cache levels=1:2 keys_zone=cache:128m max_size=1G; server{ #用于指定主机暴露的服务端口 listen 8080; #用来指定本地IP地址或者域名,多个域名之间用空格分开 server_name localhost nginx.abc.com; #用于设定访问的默认首页地址 index index.html index.htm index.jsp; #指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径 root /nginx/html; #Charset用于设置网页的默认编码格式 charset utf-8; #后端服务器连接的超时时间_发起握手等候响应超时时间 proxy_connect_timeout 10s; #连接成功后等候后端服务器响应时间其实已经进入后端的排队之中等候处理 proxy_send_timeout 60s; #后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据 proxy_read_timeout 60s; #响应内容缓冲 proxy_buffering on; #设置临时文件的总大小 proxy_max_temp_file_size 0; #该指令设置缓冲区大小,从代理后端服务器取得的第一部分的响应内容,会放到这里.小的响应header通常位于这部分响应内容里边.默认来说,该缓冲区大小等于指令 proxy_buffers所设置的;但是,你可以把它设置得更小. proxy_buffer_size 16k; #该指令设置缓冲区的大小和数量,从被代理的后端服务器取得的响应内容,会放置到这里. 默认情况下,一个缓冲区的大小等于内存页面大小,可能是4K也可能是8K,这取决于平台。 proxy_buffers 4 16k; #禁用Nginx显示响应报文的版本 server_tokens off; #设置错误信息返回页面,通过error_page指令可以指定各种错误code对应的展示页面。Nginx默认会在主目录的html目录中查找指定的展示页面。需要注意的是,这些展示页面的大小一定要超过512b,否者会被IE浏览器替换为IE默认的错误页面 error_page 404 /404.html; error_page 500 502 503 504 /50x.html; #指定请求 if ($request_method !~* GET|HEAD|POST|PUT) { return 403; } location = /50x.html { root html; } location / { #安全设置 set $req_body_data ""; set $request_body_data ""; set $response_body_data ""; set $response_header_data ""; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header HOST $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Accept-Encoding ""; proxy_intercept_errors on; #代理地址 proxy_pass http://webserver; #静态资源采用的地址 location ~* \.(html|css|gif|jpeg|jpg|png|bmp|swf|woff2|ico|js)$ { access_log off; proxy_pass http://webserver; } #状态页配置,为满足后续的后续的zabbix监控 #location /status { #check_status; #access_log off; #allow all; #deny all; #} #location /nginxstatus { #stub_status on; #allow 127.0.0.1; #deny all; #access_log off; #} } error_page 400 403 404 500 501 502 503 504 505 /error.html; }