-
全局块:该配置是nginx的全局配置,如pid存放路径,日志存放路径,运行nginx的用户等。
-
events块:配置影响nginx服务器或与用户的网络连接,事件驱动模型等。
-
http块:配置一些有关请求的操作参数,如定义mime-type,日志格式定义,是否使用sendfile传输文件,压缩相关参数,和文件引入等操作,并且在该块中配置1个或多个server虚拟主机,即其包含server块,upstream块。
-
server块:配置虚拟主机相关参数,如端口、IP或域名,并且需在该块中配置1个或多个location路由,即其包含location块。
-
location块:配置请求路由,以及页面处理,或进行反向代理操作。
-
upstream块:反向代理和负载均衡配置。
-
具体配置文件如下:
#用户
user nginx;
#进程数
worker_processes 1;
#错误日志存放路径,以及日志级别选择warn、info等
error_log /var/log/nginx/error.log warn;
#pid存放路径
pid /var/run/nginx.pid;
#以上属于全局块的内容,以下属于其他块的内容
#events块配置
events {
#事件驱动模型(不同的操作系统由不同的模型)
use epoll;
#单个进程最大连接数(最大连接数=连接数*进程数)
worker_connections 1024;
}
#http块配置
http {
#跨域请求配置
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
add_header Access-Control-Allow-Headers X-Requested-With;
#文件引入,定义mime-type
include /etc/nginx/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"';
#$remote_addr 与 $http_x_forwarded_for 客户端的ip地址;
#$remote_user 客户端用户名称;
#$time_local 访问时间与时区;
#$request 请求的url与http协议;
#$status 请求状态;成功是200;
#$body_bytes_s ent 发送给客户端文件主体内容大小;
#$http_referer 从那个页面链接访问过来的;
#$http_user_agent 客户端浏览器的相关信息;
#访问日志
access_log /var/log/nginx/access.log main;
#传输文件,普通应用on,
sendfile on;
#tcp_nopush on;
#超时间隔
keepalive_timeout 65;
#开启压缩,还有有关压缩的其他参数没有在此赘述
gzip on;
#为了提高可维护性,采用文件引入的方式配置server(包含了location)和upstream
include /etc/nginx/conf.d/*.conf;
}
被引入的文件(包含了server块与upstream块):
#upstream块:反向代理和负载均衡配置
upstream bbb {
#负载均衡模式,默认采用轮询算法,weight表示权重,用以指定轮询几率,权重比即被访问比
server 192.168.72.129:8080 weight=3;
server 192.168.72.129:8081;
server 192.168.72.129:8082;
}
upstream ccc {
#负载均衡算法ip_hash
ip_hash #每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
#还有其他负载均衡算法如fair(第三方),按后端服务器的响应时间来分配请求,响应时间短的优先分配。
server 192.168.72.129:8083;
server 192.168.72.129:8084;
server 192.168.72.129:8085;
}
#server块、location块配置
server {
listen 80; # 端⼝
server_name www.aaa.com; # 域名或ip
location /nihao { # 访问路径配置->http://www.aaa.com:80/nihao
proxy_pass http://bbb;#转发至bbb,其为upstream块中名称
index index.html index.htm; # 默认⾸⻚
}
location / { # 访问路径配置->http://www.aaa.com:80/
root /usr/share/nginx/html;# 根⽬录
index index.html index.htm; # 默认⾸⻚
}
error_page 500 502 503 504 /50x.html; # 错误⻚⾯,当遇到50x状态码则路由至/50x.html
location = /50x.html {
root html;
}
}
更多的配置可参考:
Nginx 服务器安装及配置文件详解
Nginx配置文件详解
Nginx配置文件详解:新手必看
遇到的问题:
docker启动了nginx容器,但测试时无法访问nginx
解决方案:
- 检查配置文件,有可能你少打了一个字母或一个标点符号。
- 你需要手动启动,敲入如下命令即可。
docker exec -it 容器名 bash
/usr/sbin/nginx