log_format log '"$remote_addr" - "$remote_user" [$time_local] "$request" '
'"$status" "$body_bytes_sent" "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$cookie_JSESSIONID" "$host" "$upstream_addr" "$upstream_status" "$upstream_response_time" "$request_time" "$request_body" "$cookie__ver"';
server {
listen 80;
server_name www.test.com;
access_log /dev/stdout log; //重点解释1
error_log /dev/stdout;
location / {
root /www;
index index.html index.htm;
try_files $uri $uri/ /index.html =404; //重点解释2
}
}
server {
listen 80 default_server; //重点解释3
access_log /dev/stdout log;
error_log /dev/stdout;
location / {
root /www;
index index.html index.htm;
}
}
1、
/dev/stdout 标准输出 作用:日志输出docker日志中,而不输入到具体的文件中
/dev/stdin 标准输入
/dev/stderr 标准错误
/dev/null 不输入输出
2、
try_files $uri $uri/ /index.html =404; 根据查询文件的路径查询文件,假如找不到则404默认是index.html文件
参数详细解释:
try_files 查找文件
$uri 查询的url
$uri/ 找到具体的url及其下一层的具体的文件
/index.html =404 找不到文件,则直接返回index.html文件,假如 index.html也没有找到,则直接返回状态码404。
- 关键点1
按指定的file顺序查找存在的文件,并使用第一个找到的文件进行请求处理
- 关键点2
查找路径是按照给定的root或alias为根路径来查找的
- 关键点3
如果给出的file都没有匹配到,则重新请求最后一个参数给定的uri,就是新的location匹配
- 关键点4
如果是格式2,如果最后一个参数是 = 404 ,若给出的file都没有匹配到,则最后返回404的响应码
server {
listen 80;
listen 443;
server_name www.test.cn ;
access_log /dev/stdout log;
error_log /dev/stdout;
location / {
root /www;
index index.html index.htm;
try_files $uri $uri/ @default; //这样写就不会在找不到路径的时候默认加载index.html,
//而是直接会返回状态4040
}
location @default {
return 404;
}
}
3、
default_server指令定义默认的server出处理一些没有成功匹配server_name的请求,如果没有显示定义,则会选取第一个定义的server作为default_server。比如当你访问的地址为 ip 的时候,这时候指定的server_name为域名肯定是不匹配的,设置上default_server就可以直接走这个了。