nginx 配置
nginx基本服务配置:
nginx大部分配置可以 在 http、server、localtion 不同的作用域下有效。 功能配置上 我们都希望尽可能 的范围小,不要影响其他的应用。
- location:请求路由 映射,匹配拦截。
location匹配规则:
在顺序上,前缀字符串顺序不重要,按照匹配长度来确定,正则表达式则按照定义顺序。
在优先级上,=
修饰符最高,^~
次之,再者是正则,最后是前缀字符串匹配。
server { location /doc { [ configuration A ] } location /docu { [ configuration B ] } } # 请求 /document 使用 configuration B # 虽然 /doc 也能匹配到,但在顺序上,前缀字符串顺序不重要,按照匹配长度来确定
- root真实路径:是 root指定的值 加上 location指定的值。【只有 "/" 路径的 location的文件目录是用root的,其它的都用alias】
如果一个网站里面根据目录可能还有 子网站,如果网站的帮助文档子站,这时就需要指向文件目录就可能要用到alias了。 - alias真实路径:是 alias指定的值,不包含location指定的值了。【一般指定url的话,用alias指定路径,而不是 root】
- index:首页设置
- try_files :https://blog.csdn.net/xf552527/article/details/78720870
- rewrite:https://www.cnblogs.com/yoyo1216/p/13278090.html
- proxy_pass:
server { listen 8000; server_name localhost; location / { root E:/代码仓库/B09_汽车金融综合业务平台/1.开发库/4.源码类/sm-hfi/sm-cdb-web/src/main/webapp; index index.html; } #下面配置node服务器的地址,服务程序会自动进行代理转发 location /api { rewrite ^.+api/?(.*)$ /$1 break; include uwsgi_params; proxy_pass http://192.168.90.112:3000; } }
反向代理中 proxy_set_header 相关配置:https://blog.51cto.com/u_6215974/4937509
- proxy_set_header:即允许重新定义或添加字段传递给代理服务器的请求头。该值可以包含文本、变量和它们的组合。在没有定义proxy_set_header时会继承之前定义的值。默认情况下,只有两个字段被重定义:
proxy_set_header Host $proxy_host; proxy_set_header Connection close;
日志配置
服务器的日志是很重要的,如果出现问题就是通过日志来分析问题出在哪里的。如 反向代理,请求不成功时,通过日志可以查看 真实的请求地址是不是正确。
1、日志级别:
- nginx日志级别 debug |info |notice |warn | error | crit 丨 alert | emerg,错误级别从左到右越来越大。
日志 级别 在 后面 配置上就可以,默认的级别 combined.#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;
如果出现问题,就开启 dubug 级日志,排查问题就可以了。
- 自定义日志级别(显示格式):
http { //自定义了一个proxy级别日志,后面配置对应的日志内容 log_format proxy '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
显示内容根据配置的 变量 就可以把值对应显示出来。(内置变量列表 在下面)
使用时,在对应的server或location 里面启用这个级别的日志location / { root html; index index.html index.htm; access_log logs/access.log proxy; }
2、nginx中日志分析:https://www.yisu.com/zixun/161169.html
日志文件中包含的信息如下:
1.客户端(用户)IP地址。如:上例中的 201.158.69.116
2.访问时间。如:上例中的 [03/Jan/2013:21:17:20 -0600]
3.访问端口。如:上例中的 127.0.0.1:9000
4.响应时间。如:上例中的 0.007
5.请求时间。如:上例中的 0.007
6.用户地理位置代码(国家代码)。如:上例中的 MX(墨西哥)
7.请求的url地址(目标url地址)的host。如:上例中的 pythontab.com
8.请求方式(GET或者POST等)。如:上例中的 GET
9.请求url地址(去除host部分)。如:上例中的 /html/test.html
10.请求状态(状态码,200表示成功,404表示页面不存在,301表示永久重定向等,具体状态码可以在网上找相关文章,不再赘述)。如:上例中的 "200"
11.请求页面大小,默认为B(byte)。如:上例中的 2426
12.来源页面,即从哪个页面转到本页,专业名称叫做“referer”。如:上例中的 "http://a.com"
13.用户浏览器语言。如:上例中的 "es-ES,es;q=0.8"
14.用户浏览器其他信息,浏览器版本、浏览器类型等。如:上例中的 "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"
3、自定义日志格式:https://blog.csdn.net/u013727805/article/details/107262455 [ 目前没有测试成功 ]
nginx 内置变量:
- nginx 全局变量:https://www.cnblogs.com/yyxianren/p/10815007.html
- $uri : 不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。
- $server_name : 服务器名称。
- $args:请求中的参数,如www.123.com/1.php?a=1&b=2的$args就是a=1&b=2
nginx 常用功能配置
- web服务器
- 反向代理
- 重定向
- 防盗链:https://www.cnblogs.com/viruscih/articles/10669688.html
- 静态文件缓存处理:https://www.cnblogs.com/hanshuai/p/12002202.html
缓存服务器是会缓存静态文件的,如果spa的 index.html 要求不能缓存,需要在nginx上配置。 - nginx 强缓存、协商缓存配置:https://blog.csdn.net/weixin_43837268/article/details/109195243
- 禁止访问某个目录
nignx中可能出现的问题
a、上传大文件超时解决办法【nginx可以实现针对,某个接口 配置 上传文件和超时时间的设置】:https://blog.csdn.net/liutong123987/article/details/79301871
nginx 的 其它概念、功能:
1、nginx 批处理 :https://www.cnblogs.com/hope250/p/7892546.html
2、nginx 优雅的重启: https://www.zhangshengrong.com/p/zAaOKJbEad/
说明:如果nginx要配置新的 web 服务器,配置文件改好后。通过优雅的重启,不会影响已经在nginx中运行的项目。