简介
Nginx作为优秀的web服务器,通常用来作反向代理、负载均衡、静态资源服务等使用。
配置文件详解
#user nobody; #配置用户或者组,默认为 nobody。
worker_processes 1; #工作进程的进程数,默认为1,每个进程大概花费10M左右的内存,一般指定为CPU的核心数。
#pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址
error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别依次为:debug|info|notice|warn|error|crit|alert|emerg
events { #nginx驱动模型
accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
#use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections 1024; #进程的最大连接数,默认为512
}
http { #http设置
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型,默认为text/plain。这里指定为二进制流。
#access_log off; #取消服务日志
log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
access_log log/access.log myFormat; #combined为日志格式的默认值
sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。
upstream platform{ #上游服务器地址,负载均衡服务器设置
server 127.0.0.1:8080 weight=1; #配置负载的地址和权重
server 127.0.0.2:8080 weight=2;
server 127.0.0.3:8080 backup; #备份服务器,其他服务器无法使用时访问这个服务器
}
error_page 404 https://www.baidu.com; #错误页
server { #主机设置
keepalive_requests 120; #单连接请求上限次数。
listen 4545; #监听端口
server_name 127.0.0.1; #监听地址
location ~*^.+$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
#root path; #根目录
#index vv.txt; #设置默认页
proxy_pass http://platform; #请求转向platform 定义的服务器列表
deny 127.0.0.1; #拒绝的ip,all表示所有
allow 172.18.5.54; #允许的ip
}
}
}
配置反向代理
反向代理主要是设置proxy_pass
...
http {
...
server {
keepalive_requests 120; #单连接请求上限次数。
location /baidu {
proxy_pass http://www.baidu.com/;
proxy_read_timeout 1800s; #请求超时时间
proxy_set_header Host $host:$server_port;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #添加转发客户端地址
proxy_set_header X-Forwarded-Proto $scheme;
deny 127.0.0.1; #拒绝的ip,all表示所有
allow 172.18.5.54; #允许的ip
}
}
}
注意: proxy_pass中配置的地址中当末尾有’/'时,转发时会去掉location上的路径,如上例子:
- http://www.baidu.com/时:访问的地址为http://www.baidu.com/
- http://www.baidu.com时:访问的地址为http://www.baidu.com/baidu
配置负载均衡
负载均衡是在反向代理基础上增加上游服务器数量,来分摊负载,增加upstream
...
http {
...
upstream platform{ #上游服务器地址,负载均衡服务器设置
server 127.0.0.1:8080 weight=1; #配置负载的地址和权重
server 127.0.0.2:8080 weight=2 max_fails=3 fail_timeout=20s;
server 127.0.0.3:8080 backup; #备份服务器,其他服务器无法使用时访问这个服务器
server 127.0.0.4:8080 down; #不参与负载
}
server {
keepalive_requests 120; #单连接请求上限次数。
location /platform {
proxy_pass http://platform; #对应upstream 后面的名字
proxy_read_timeout 1800s; #请求超时时间
proxy_set_header Host $host:$server_port;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #添加转发客户端地址
proxy_set_header X-Forwarded-Proto $scheme;
deny 127.0.0.1; #拒绝的ip,all表示所有
allow 172.18.5.54; #允许的ip
}
}
}
负载均衡默认为轮询模式,即127.0.0.1:8080访问一次,127.0.0.2:8080访问两次,反复循环。 max_fails(允许失败的次数)、fail_timeout(经历最大失败次数后暂停时间)。
静态资源
nginx配置静态访问有root和alias两种方式,他们的区别和proxy_pass 后面的“/”差不多,root会带上过滤的地址,alias不会带上过滤的地址
...
http {
...
server {
location /static/ {
root /www/root/html/; #访问的地址为/www/root/html/static/
}
location /static/ {
alias/www/root/html/static/; #访问的地址为/www/root/html/static/
}
}
}
来源:CSDN
作者:chaoXiangGuo
链接:https://blog.csdn.net/qq_39191116/article/details/104264150