Nginx主配置文件结构
main
├── events
├── http
│ ├── upstream
│ ├── server
│ ├── server
│ │ ├── location
│ │ ├── location
│ │ └── ...
│ └── ...
└── ...
配置文件的语法规则
- 每条指令以 ; 分号结尾,指令与参数间以空格符号分隔
- 指令块以 {} 大括号将多条指令组织在一起
- include 语句允许组合多个配置文件以提升可维护性
- 使用 # 符号添加注释
- 使用 $ 符号使用变量
- 部分指令的参数支持正则表达式
典型配置
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
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 /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
deny 172.168.22.11;
allow 172.168.33.44;
}
error_page 500 502 503 504 /50x.html;
error_page 400 404 error.html;
}
}
配置访问图片
location /img/ {
alias /data/img/;
autoindex on;
}
- 若访问资源出现403 forbidden,解决办法:修改web目录的读写权限(包括上级目录)
chmod -R 777 dir_name
,或者是把nginx的启动用户改成目录的所属用户,重启Nginx即可解决
配置负载均衡
upstream lb {
server 127.0.0.1:8080 weight=3;
server 127.0.0.1:8081 weight=1;
}
location / {
proxy_pass http://lb;
}
配置端口转发
server {
listen 8080;
server_name ip_address;
location /path {
proxy_pass http://127.0.0.1:8888;
}
}
root与alias主要区别
- root的处理结果是:root后面的路径+location后面的路径;alias的处理结果是:使用alias路径替换location路径
- alias后面必须要用"/"结束,否则会找不到文件的,而root则可有可无
- alias只能位于location块中。(root可以不放在location中)