#Nginx常见问题
多ServerName优先级总结,在开始处理一个HTTP请求时,web01会读取header请求头中host,与每个server中的server的server_name 进行匹配,来决定用哪一个server标签来完成处理这个请求。有可能一个Host与多个server中的server_name都匹配,这个时候就会更具匹配优先级来选择实际处理的server块。优先级匹配结果如下:
1.首先选择所有的字符串完全匹配的server_name(完全匹配)
2.选择通配符在前面的server_name,如*。oldboy.com
3.选择通配符在后面的server_name,如oldboy.*
4.最后选择使用正则表达式匹配的server_name
5.如果全部都没有匹配到,那么将选择在listen配置项后加入[default|default_server]的server块
6.如果没写,那么就找到匹配listen端口的第一个Server块的配置文件
2.禁止IP访问,只允许域名访问
1.接受到IP访问或非指定域名访问时会返回500错误
server {
listen 80 default_server;
server_name _;
return 500;
}
2.可以将流量集中导入自己的网站,只要做以下跳转设置就可以
server {
listen 80 default_server;
return http://rewrite.test.com;
}
3.Include文件
一台服务器配置多个server文件,会导致nginx.conf主配置文件变得非常庞大而且可读性非常的差。使用Include的目的是为了简化主配置文件。
4.alias与root路径匹配
alias是一个目录别名的定义,root则是最上层目录的定义
server {
listen 80;
server_name rewrite.test.com;
location / {
root /home/www;
index index.html index.php index.html;
}
location /images/ {
alias /home/images/;
}
}
5.error_page
server {
listen 80;
server_name rewrite.test.com;
location / {
root /home/www;
index index.html index.php index.html;
error_page 404 /404.jpg;
error_page 500 502 503 504 /500.jpg;
}
location /500.jpg {
root /home/www;
}
}
6.匹配文件的try_file
server {
listen 80;
server_name rewrite.test.com;
root /home/www;
index index.html index.php index.html;
error_page 404 /404.jpg;
error_page 500 502 503 504 /500.jpg;
location / {
try_files $request_uri @proxy;
}
location @proxy {
proxy_pass http://127.0.0.1:8080;
}
location /500.jpg {
root /home/www;
}
# redirecr server error pages to the static page /50x.html
#
}
#server {
#listen 80 default_server;
#return http://rewrite.test.com;
#}