nginx多server优先级
## 优先级匹配顺序
1.首先选择所有的字符串完全匹配(精确匹配)的server_name。(完全匹配)
2.选择通配符在前面的server_name
3.选择通配符在后面的server_name
4.正则表达式的server_name
5.所有匹配规则相同时,哪个配置文件listen...后面加了default_server哪个优先级就最高
6.按照配置文件的顺序访问第一个配置文件
禁止IP访问
## 禁止IP访问,并返回错误页面,域名可以正常访问
[root@lb01 conf.d]# vim www.jin.conf
server {
listen 80 default_server;
server_name _;
charset utf-8;
default_type text/json; # 指定文件类型,是打开还是下载
return 500 "页面500 ,给爷爬~"; ## 自定义
}
server {
listen 80;
server_name www.jin.com;
root /code/nan;
index index.html;
}
## 禁止IP访问,并跳转到主站点
[root@lb01 conf.d]# vim www.jin.conf
server {
listen 80 default_server;
server_name _;
charset utf-8;
rewrite (.*) http://www.jin.com$1 redirect;
}
server {
listen 80;
server_name www.jin.com;
root /code/nan;
index index.html;
}
nginx包含其他子配置文件include
include /etc/ngxinx/conf.d/*.conf
include /etc/nginx/fastcgi_params
include /etc/nginx/proxy_parmas ## 自己创建的 代理优化参数
## 自己创建
## 需要生效的配置文件
[root@web01 conf.d]# mkdir /etc/nginx/conf.d/online
## 不需要生效的配置文件
[root@web01 conf.d]# mkdir /etc/nginx/conf.d/offline
## 修改nginx主配置文件
include /etc/nginx/conf.d/online/*.conf;
站点目录路径root和alias区别
root与alias路径匹配主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上,alias是一个目录别名的定义,root则是最上层目录的定义。
root的处理结果是:root路径+location路径alias的处理结果是:使用alias定义的路径
## root指定站点目录
[root@lb01 conf.d]# vim www.jin.conf
server {
listen 80 default_server;
server_name _;
charset utf-8;
rewrite (.*) http://www.jin.com$1 redirect;
}
server {
listen 80;
server_name www.jin.com;
location <sub> /tupian {
root /code/image;
}
}
## 图片路径:/code/image/tupian/1.jpg
## 访问图片访问:www.jin.com/tupian/1.jpg
## alias指定站点目录
[root@lb01 conf.d]# vim www.jin.conf
server {
listen 80 default_server;
server_name _;
charset utf-8;
rewrite (.*) http://www.jin.com$1 redirect;
}
server {
listen 80;
server_name www.jin.com;
location </sub> /tupian {
alias /code/image;
}
}
## 图片路径/code/image/1.jpg
# 注意: 访问图片需修改配置文件,这个配置是要明白“root"和"alias"路径的区别。
Nginx try_file路径匹配
## Nginx try_file配置实例1
[root@web01 code]# vim /etc/nginx/conf.d/www.jin.conf
server {
listen 80;
server_name www.jin.com;
root /code;
index index.html;
location / {
try_files $uri $uri/ /404.html;
}
}
## Nginx try_file配置实例2
#1. 配置nginx
[root@lb01 conf.d]# cat www.conf
server {
listen 80;
server_name www.jin.com;
root /code;
index index.html;
location / {
try_files $uri $uri/ @java; #当$uri和$uri/都匹配不到时,由后端的java来进行处理,名字可自定义,但一定要加@
}
location @java {
proxy_pass http://172.16.1.8:8080; #配置后端tomcat
}
}
#2. 配置后端tomcat
[root@web02 ~]# cd /usr/share/tomcat/webapps/ROOT
[root@web02 ROOT]# echo 'i am tomcat' > index.html
[root@web02 ROOT]# systemctl start tomcat
#3. 把文件都挪走
[root@lb01 code]# mv index.html index1.html /tmp/
#4. 测试访问
[root@lb01 code]# curl http://www.jin.com/index.html
i am tomcat
## 举例 ##
location /code/ {
try_files $uri $uri/ /404.html;
}
# 用户请求www.jin.com/code/code.html,Nginx 会首先通过用于这个 location,在本地目录中查找这个文件。如果“code.htmlf”文件不存在,Nginx 会查找“code.html/”目录,即“www.jin.com/code/code.html/”,如果都不存在,会重定向到“/404.html”
nginx调整上传文件大小
cyntax: client_max_body_size size;
Default: client_max_body_size 1m;
Context: http, server, location
## 建议加载http层
nginx优雅的显示404错误页面
# 第一种解决方案:跳转页面
[root@lb01 code]# vim /etc/nginx/conf.d/www.jin.conf
server {
listen 80;
server_name www.jin.com;
root /code;
location / {
index index.html;
error_page 403 404 http://www.baidu.com;
}
}
## 跳转到本地页面
[root@lb01 code]# vim /etc/nginx/conf.d/www.jin.conf
server {
listen 80;
server_name www.jin.com;
root /code;
location / {
index index.html;
error_page 403 /404.html;
}
}
隐藏nginx版本号
htttp{
server_tokens off;
...
}