0
点赞
收藏
分享

微信扫一扫

Nginx常见问题

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常见问题_htmlnginx调整上传文件大小

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;
...
}


举报

相关推荐

0 条评论