[toc]
Nginx多Server优先级 问题描述 在开始处理一个http请求时,nginx会取出header头中的Host变量,与nginx.conf中的每个server_name进行匹配,以此决定到底由哪一个server来处理这个请求,但nginx如何配置多个相同的server_name,会导致server_name出现优先级访问冲突。
演示实例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 cat 1.conf 2.conf 3.confserver{ listen 80; server_name _; root /code/1; index index.html; } server{ listen 80; server_name _; root /code/2; index index.html; c8 } server{ listen 80; server_name _; root /code/3; index index.html; } mkdir /code/{1..3}nginx -t nginx: [warn] conflicting server name "_" on 0.0.0.0:80, ignored nginx: [warn] conflicting server name "_" on 0.0.0.0:80, ignored echo 1 > /code/1/index.htmlecho 2 > /code/2/index.htmlecho 3 > /code/3/index.html1.首先选择所有的字符串完全匹配的server_name。(完全匹配) 2.选择通配符在前面的server_name,如.driverzeng.com blog.driverzeng.com3.选择通配符在后 面的server_name,如driverzeng. driverzeng.com driverzeng.cn 4.最后选择使用正则表达式匹配的server_name 5.如果全部都没有匹配到,那么将选择在listen配置项后加入[default_server]的server块 6.如果没写,那么就找到匹配listen端口的第一个Server块的配置文件 0 ✓ 17:39:51 root@web01,172.16.1.7:/etc/nginx/conf.d 3.conf server{ listen 80; server_name (blog|www).xxx.com; root /code/1; index index.html; } server{ listen 80; server_name www.xxx.com; root /code/2; index index.html; } server{ listen 80; server_name *.xxx.com; root /code/3; index index.html; } 10.0.0.7 www.xxx.com 首先选择所有的字符串完全匹配的server_name server{ listen 80; server_name (blog|www).xxx.com; root /code/1; index index.html; } server{ listen 80; server_name *.xxx.com; root /code/3; index index.html; } 1.首先选择所有的字符串完全匹配的server_name。(完全匹配) 2.选择通配符在前面的server_name 3.选择通配符在后面的server_name 4.最后选择使用正则表达式匹配的server_name 5.如果全部都没有匹配到,那么将选择在listen配置项后加入[default_server]的server块 6.如果没写,那么就找到匹配listen端口的第一个Server块的配置文件 server{ listen 80; server_name _; root /code/1; index index.html; } server{ listen 80 default_server; server_name _; root /code/2; index index.html; } server{ listen 80; server_name _; root /code/3; index index.html; }
nginx禁止IP访问 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 server{ listen 80 default_server; server_name _; charset utf-8; rewrite (.*) http://www.xxx.com$1 redirect; } server{ listen 80; server_name www.xxx.com; root /code/2; index index.html; }
灵活运用include 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 include /etc/nginx/stream.d/.*conf include /etc/nginx/fastcgi_params include /etc/nginx/proxy_params mkdir /etc/nginx/conf.d/onlinemkdir /etc/nginx/conf.d/offlinevim /etc/nginx/nginx.conf include /etc/nginx/conf.d/online/*.conf;
nginx优雅展示404界面 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 server{ listen 80 default_server; server_name _; charset utf-8; rewrite (.*) http://www.xxx.com$1 redirect; } server{ listen 80; server_name www.xxx.com; location /{ root /code; index index.html; error_page 404 /404.html; } } vim /code/404.html <img style='width:50%;height:80%;' src=https://pic.616pic.com/ys_img/00/28/62/hQ2ObS5ZZR.jpg>
隐藏nginx版本 1 2 3 4 http{ sever_tokens off; }
nginx调整上传文件的大小 1 2 3 client_max_body_size size 1M/500M; http server location