Nginx listen、server_name、location的配置
# Nginx静态资源的配置指令 # listen指令 # 语法 listen address[:port][default_server] # 如: listen 127.0.0.1:8000; # 监听指定ip和端口 listen 127.0.0.1:8000 default_server; # 监听指定ip和端口,并设置为默认连接。默认连接就是在服务列表中没有找到服务的时候默认访问该服务 listen 127.0.0.1; # 监听指定ip下的所有端口 listen 8000; # 监听指定端口下的连接 listen *:8000; # 也是监听指定端口下的连接 # 补充知识点:/etc/hosts域名解析文件配置 # ,当本地浏览器访问某个域名的时候,首先会从/etc/hosts文件中查找,找不到再去dns中去找 # 所以你可以直接配置本地的域名 vim /etc/hosts 127.0.0.1 www.baidu.com # server_name指令 # 语法 server_name name1 name2 name3 …… # name的值可以是一个ip地址,也可以是域名,多个name之间需要用空格隔开 # 位置:只能在server中配置server_name # 如: server_name www.abc.cn www.a.cn # server_name的配置方式有三种 # 1.精准配置 server_name www.abc.cn www.a.cn # 2.通配符配置,通配符不能放在中部位置的,只能放在首尾位置 server_name *.abc.cn www.a.* # 3.正则表达式配置 # 以正则配置server_name的时候必须以~开头 # 不明白正则怎么用的可以在该网站学习:https://www.runoob.com/regexp/regexp-syntax.html # 这里的(\w+)小括号的内容你可以在下文通过$1的方式获取它的值 # 比如:输入的是www.abc123.com,那么$1的值就是abc123,你可以在日志中引用 # 如果有多个()按顺序$1 $2 $3 …… server_name ~^www.\.(\w+)\.com; # server_name 的匹配执行顺序 # 也就是当一个一个请求能匹配多个server_name的时候,到底执行哪个server_name # 优先是精准匹配 # 然后是通配符在开头的server_name # 再然后是通配符再结尾的server_name # 最后是正则表达式的server_name # 都没找到的话就返回defualt_server 也就是not found server。 # location指令 # 语法:localtion [= 、 ~ 、 ~* 、 ^~ 、 @] uri{...} location /abc{ default_type text/plain; return 200 'access success'; } # =等号是精准匹配, # www.abc.com/abc 和 www.abc.com/abc?a=123 都可以访问 # www.abc.com/abc/ 和 www.abc.com/abcd 都不能访问 location =/abc{ default_type text/plain; return 200 'access success'; } # ~和~*表示当前uri包含了正则表达式,它们之间的区别是~区分大小写,~*不区分大小写 # 能匹配 www.abc.com/abc1 www.abc.com/abcdef # 不能匹配www.abc.com/abc location ~*^/abc\w${ default_type text/plain; return 200 'access success'; } # ^~,注意它是不包含正则表达式的前面,功能和不加符号的一直,唯一不同的是,如果模式匹配,那么就停止搜索其他模式了。 # location的搜索模式是一直往后搜索,然后取最后一个匹配的location # ^~的存在就是,搜索到该location并且匹配成功,就直接停止向后搜索 location ^~/abc{ default_type text/plain; return 200 'access success'; } # root、alias都是设置请求资源的目录 # root语法:root path; # 默认值:html # alias语法:alias path; # 默认值:无 # 当访问 localhost/images/mv.png时 # root情况下访问的文件路劲是 html/images/mv.png # alias情况下范文的文件路径是 html/mv.png # 得出结论是: # root处理结果是:root路径+location路径 # alias处理结果是: alias路径替换location路径 location /images { root html; } location /images { alias html; } # index指令 配置访问目录下默认访问的文件。可以配置多个文件,空格隔开 # 它会从左往右依次去找,直到找到文件为止 # 语法:index file ...; index index.html index.hml # error_page 指令,用来设置网站的错误页面 # 语法:error_page code ... [=[response]] uri # code是返回状态码 # 位置 http、server、location # 可以直接指定具体跳转的地址 server { error_page 404 http://www.itcast.cn } # 可以指定重定向地址 server { error_page 404 50.html; error_page 500 502 503 504 /50x.html; location =/50x.html{ root html; } } # @语法 server { error_page 404 @jump_to_error; error_page 500 502 503 504 /50x.html; location @jump_to_error{ root html; } } # 可选项 =[response]的作用的是,将响应码重新修改 # 也就是location中return的响应码 # 这里本应该返回404响应码,当加上=200的时候它就返回200了,而不反悔404 server { error_page 404 =200 @jump_to_error; error_page 500 502 503 504 /50x.html; location @jump_to_error{ root html; } }