分类 Nginx 下的文章

nginx

使用try_files属性

location / {
  root   /app/web;
  try_files $uri $uri/ @router; #检测文件是否存在不存在则重定向到首页目录    防止404
  index  index.html index.htm;
  #proxy_set_header        Host $host;
  #nginx非80端口处理 加上 :$server_port
   client_max_body_size 10m;
   client_body_buffer_size 128k;
}
location @router {
   rewrite ^.*$ /index.html last;
}

在项目的子路由下刷新页面出现了404,这是因为刷新页面时访问的资源在服务端找不到,因为vue-router设置的路径不是真实存在的路径。
当用户请求 http://localhost/example 时,这里的 $uri 就是 /example。
try_files 会到硬盘里尝试找这个文件。如果存在名为 /$root/example(其中 $root 是项目代码安装目录)的文件,就直接把这个文件的内容发送给用户。

Nginx 可以通过with-http_stub_status_module模块来监控nginx的一些状态信息。
1.通过nginx -V来查看是否有with-http_stub_status_module该模块。
nginx status查看状态 handled requests
2.修改nginx.conf,如下:
location /ngx_status {

    stub_status on;
    access_log off;
    #allow 127.0.0.1;允许哪个ip可以访问

}

Active connections: 2 表示Nginx正在处理的活动连接数2个。
server 2 表示Nginx启动到现在共处理了2个连接
accepts 2 表示Nginx启动到现在共成功创建2次握手
handled requests 1 表示总共处理了 1 次请求
Reading:Nginx 读取到客户端的 Header 信息数
Writing:Nginx 返回给客户端 Header 信息数
Waiting:Nginx 已经处理完正在等候下一次请求指令的驻留链接(开启keep-alive的情况下,这个值等于Active-(Reading+Writing))

方法一

报错提示一般是多了个空格,将新加的配置多余空格删除即可。

方法二

若配置文件确实没问题,可能conf文件被记事本编辑过,保存成了含[BOM] 。所以才报错的。

解决办法
使用editplus 等其它非记事本 另存为 UTF-8 不含BOM 的文件就可以了。

nginx unknown directive

nginx在反向代理HTTP协议的时候,默认使用的是HTTP1.0去向后端服务器获取响应的内容后在返回给客户端。
HTTP1.0和HTTP1.1的一个不同之处就是,HTTP1.0不支持HTTP keep-alive。nginx在后端服务器请求时使用了HTTP1.0同时使用HTTP Header的Connection:Close通知后端服务器主动关闭连接。这样会导致任何一个客户端的请求都在后端服务器上产生了一个TIME-WAIT状态的连接。所以我们需要在Nginx上启用HTTP1.1的向后端发送请求,同时支持Keep-alive。

配置方法

我们增加三个参数keepalive 50,proxy_http_version 1.1 , proxy_set_header Connection 来配置。
upstream http_backend {

server 127.0.0.1:8080;
keepalive 50;

}
server {

...
location /http/ {
    proxy_pass http://http_backend;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    ...
}

}

如以下的配置是 所有静态页面都到/my/web/item/m路径下,排除ueditor编辑器的html路径

location ~ /ueditor/.*\.(html)$   #需要排除的路径放在这里,不然走下面的html 404找不到路径
{
    root  /my/web/item;
}

location ~* \.(html)$ {  #访问静态页面
         expires 30d;  #缓存30天
         root /my/web/item/m;
}

注意事项:

排除的放上面,优先级高。

免责声明
本博客部分内容来自于互联网,不代表作者的观点和立场,如若侵犯到您的权益,请联系238611804@139.com。我们会在24小时内进行删除。