总结Nginx 的使用过程中遇到的问题及解决方案

在启动 Nginx 的时候,有时候会遇到这样的一个错误:

代码如下:

[emerg]: could not build the proxy_headers_hash, you should increase either proxy_headers_hash_max_size: 512 or proxy_headers_hash_bucket_size: 64

解决办法就是在配置文件中新增以下配置项:

代码如下:

proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;

这两个配置项的 size 根据系统后端发送的 header 来进行设置。

注:默认值的话,就会上面出现上面那样出现错误
 
Nginx 缓存刷新问题

在使用 Nginx 的过程中,因为 Nginx 本地使用了缓存,然后发布了静态资源后, CDN 回源的时候,发现没有正常回源,经过查询发现,是因为 Nginx 本地有缓存,而有没有对缓存进行刷新的原因,要刷新本地缓存,可以安装 Purge 模块。

Nginx 的缓存设置:

代码如下:

location /
      {
       proxy_cache cache_go;
       proxy_cache_valid 200 304 1d;
       proxy_cache_key $host$uri$is_args$args;
       proxy_set_header Host  $host;
       proxy_set_header X-Forwarded-For  $remote_addr;
       proxy_pass http://127.0.0.1:8800;
       expires      3024010s;

}

location ~ /purge(/.*)
       {
        #设置只允许指定的IP或IP段才可以清除URL缓存。
        allow            127.0.0.1;
        deny             all;
        proxy_cache_purge    cache_go   $host$1$is_args$args;
       }

Purge 模块是用来清除缓存的,首先下载安装 Puerge 模块。

下载 Purge 模块:
wget http://labs.frickle.com/files/ngx_cache_purge-1.2.tar.gz

解压:
tar -zxvf ngx_cache_purge-1.2.tar.gz

再编译前先使用如下命令查看 nginx 的编译选项:

代码如下:

/home/nginx/sbin/nginx -V
nginx version: xxxx
TLS SNI support enabled
configure arguments: --prefix=/home/nginx-1.2.8 --with-pcre=../pcre-8.31 --with-zlib=../zlib-1.2.3 --with-openssl=../openssl-1.0.0d --with-http_ssl_module --with-http_stub_status_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --add-module=../ngx_cache_purge-1.5 --add-module=../perusio-nginx-http-concat-321e344 --add-module=../ngx_http_vipshop_hostname_filter --with-ld-opt=-static

上面我的编译显示有 puerge 模块,是因为我已经编译过了,然后在原有的编译参数后面加上:

代码如下:

--add-module=/home/ngx_cache_purge-1.5

退出 Nginx ,并重新启动:

代码如下:

./nginx -s quit
./nginx

配置 Puerge :

代码如下:

location ~ /purge(/.*)
       {
        #设置只允许指定的IP或IP段才可以清除URL缓存。
        allow            127.0.0.1;
        deny             all;
        proxy_cache_purge    cache_go   $host$1$is_args$args;
       }

清楚 Nginx 缓存的方式,比如你的 url 是 http://test.com/test/test.js
 那清除该 js 缓存的命令即为:

代码如下:

curl http://test.com/purge/test/test.js

通用的方式就是:

代码如下:

curl http://test.com/purge/uri

其中 uri 就是你的 URL “http://test.com/test/test.js” 的 “test/test.js” 部分。

(0)

相关推荐

  • 权限问题导致Nginx 403 Forbidden错误的解决方法

    今天在一个新的环境上安装nginx,结果访问的都是403 通常显示403我立马都会想到路径配置不对,但我仔细看了一下,目录路径没问题: nginx.conf: 复制代码 代码如下: server {         listen       80;         server_name  localhost;           #charset koi8-r;           #access_log  logs/host.access.log  main;           locat

  • Nginx中使用gzip_http_version解决CDN只支持http 1.0问题

    网站经过CDN后,看CSS文件的header发现 复制代码 代码如下: Transfer-Encoding: chunked google了许久,发现是CDN的抓取好像只支持http 1.0 而nginx的 gzip_http_version选项默认值为1.1 在nginx的配置文件中增加或修改gzip_http_version参数,为: 复制代码 代码如下: gzip_http_version 1.0 改完重启nginx 再看已经正常. 参考文档:http://wiki.nginx.org/N

  • Nginx的c30k问题解决方法

    最近我们的下载服务遭遇了c30k,导致nginx的下载服务近乎停滞.原因嘛,很简单,服务器部署在国外,众所周知的原因,SL机房的线路不稳,加上不同地区出口速率抖动很厉害,为了加速下载,我们放开了限制,允许用户使用多线程的下载工具.这样一来,自然产生了c10k问题.下载文件都不小,每个用户至少使用4线程,同时下载若干个素材...很自然并发链接数30k以上. 更受限于手头money,无法扩容(实际上要有钱也不会跑国外).因此,必须提高单机并发能力和吞吐量. 我们的下载服务是使用Perl写的一个Pla

  • nginx缓存不起作用问题解决方法

    1. nginx不缓存原因 默认情况下,nginx是否缓存是由nginx缓存服务器与源服务器共同决定的, 缓存服务器需要严格遵守源服务器响应的header来决定是否缓存以及缓存的时常.header主要有如下: 复制代码 代码如下: Cache-control:no-cache.no-store 如果出现这两值,nginx缓存服务器是绝对不会缓存的 复制代码 代码如下: Expires:1980-01-01 如果出现日期比当前时间早,也不会缓存. 2. 解决不缓存方案 2.1 方法一:修改程序或者

  • nginx、Apache、IIS服务器解决 413 Request Entity Too Large问题方法汇总

    一.nginx服务器 nginx出现这个问题的原因是请求实体太长了.一般出现种情况是Post请求时Body内容Post的数据太大了,如上传大文件过大.POST数据比较多. 处理方法 在nginx.conf增加 client_max_body_size的相关设置, 这个值默认是1m,可以增加到8m以增加提高文件大小限制:当然可以设置的更大点. 复制代码 代码如下: # 在http,server或者location段修改下面的配置:# set client body size to 8M #clie

  • Apache、Nginx下Font Awesome在 Firefox 中不显示问题解决方法

    一.Nginx服务器解决方法 服务器使用的是 Nginx,要在响应的头部添加 Access-Control-Allow-Origin 字段,添加方法是用 add_header 指令: 配置例子: 复制代码 代码如下: location /assets/ {     gzip_static on;     expires max;     add_header Cache-Control public;     add_header Access-Control-Allow-Origin *; }

  • nginx缓存页面后 串会话问题的解决方法

    nginx支持页面缓存,之前我的博客有介绍配置方案,昨天出了一个诡异的问题,别人的机器登录后,我的机器打开应用的首页会出现别人的用户信息,也就是说我的浏览器访问的应用会话其实是别人的会话. 经检查,nginx会把响应页面的头信息也一起缓存,包括Set-cookie,导致后面访问页面的用户的cookie被设置成缓存的头. 解决方案,nginx提供proxy_hide_header的指令,可以去掉相关的响应头信息: proxy_hide_header Set-Cookie; 结论:配置后,串会话的问

  • 总结Nginx 的使用过程中遇到的问题及解决方案

    在启动 Nginx 的时候,有时候会遇到这样的一个错误: 复制代码 代码如下: [emerg]: could not build the proxy_headers_hash, you should increase either proxy_headers_hash_max_size: 512 or proxy_headers_hash_bucket_size: 64 解决办法就是在配置文件中新增以下配置项: 复制代码 代码如下: proxy_headers_hash_max_size 512

  • SQL Server成功与服务器建立连接但是在登录过程中发生错误的快速解决方案

    最近在VS2013上连接远程数据库时,突然连接不上,在跑MSTest下跑的时候,QTAgent32 crash.换成IIS下运行的时候,IIS crash.之前的连接是没问题的,后网上找了资料,根据牛人所说的方案解决了. 1. Exception message 已成功与服务器建立连接,但是在登录过程中发生错误. (provider: SSL Provider, error: 0 - 接收到的消息异常,或格式不正确.) ---> System.ComponentModel.Win32Except

  • python使用ddt过程中遇到的问题及解决方案【推荐】

    前言: 在使用DDT数据驱动+HTMLTestRunner输出测试报告时遇到过2个问题: 1.生成的测试报告中,用例名称后有dict() -> new empty dictionary 2.使用ddt生成的用例名称无法更改 1.用例名称后有dict() -> new empty dictionary 报告中用例名称后有dict() -> new empty dictionary,如图所示: 解决方案:这是ddt高版本1.2.0的bug 1.cmd先通过pip uninstall ddt

  • idea 与 maven 使用过程中遇到的问题及解决方案

    目录 1. maven项目导入idea报ComponentLookupException异常 1.1. 问题描述 1.2.解决方案 2. IDEA无法加载maven本地仓库的文件 2.1.问题描述 2.2.解决方案 3.删除maven下载失败的jar包 3.1. 问题描述 3.2.解决方案 4. 删除_maven.repositories文件 4.1.问题描述 4.2.解决方案 1. maven项目导入idea报ComponentLookupException异常 1.1. 问题描述 最近将ID

  • 详解关于Angular4 ng-zorro使用过程中遇到的问题

    写在前面 由于现在网络上Angular 4的相关技术文档不是很充分,我写出这个采坑的记录文档,一方面是想给自己在项目中遇到的各种问题与个人的理解记录下来,另一方面也想着某些坑大家可能也会遇到,也可以给道友做一个参考.文档中的很多地方多有不足,后期我会慢慢完善,也希望道友们能够及时指出文档中不正确的与可以优化的地方. 我计划将该帮助文档分为4个章节: 章节一: 关于angular 4 + ng-zorro在基础布局与模块拆分上的一些问题与操作步骤 章节二: angular 4 引入路由=> 组件模

  • zabbix自定义监控nginx状态实现过程

    目录 1. 开启状态界面 2. 写监控脚本 3. 配置监控项 4. 配置触发器 5. 测试 zabbix自定义监控nginx状态 zabbix_server 192.168.200.145 zabbix_agentd ,nginx 192.168.200.146 1. 开启状态界面 开启status: [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf location /status { stub_status on; allow

  • SpringMail使用过程中的报错解决办法

    SpringMail使用过程中的报错解决办法 1.Unable to locate provider for protocol: smtp –>缺少依赖造成的 <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4</version> </dependency> <dependency

  • 浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑

    前言 绝大多数网站都集成了第三方登录,降低了注册门槛,增强了用户体验.最近看了看 QQ 互联上 QQ 登录的接口文档.接入 QQ 登录的一般流程呢,是这样的:先申请开发者 -> 然后创建应用(拿到一组 AppId 和 AppKey)-> 获取 access_token -> 获取 openid -> 调用 openApi 访问或修改用户信息. 然而,从申请个人开发者开始,坑就来了. 1. 申请(个人)开发者 QQ 互联中申请开发者信息的页面,一些重点太过简陋,缺失细节,比如身份证正

  • sql server 2008安装过程中服务器配置出错解决办法

    sql server 2008安装过程中服务器配置出错,求助!!!!!!! 解决方法: 当sql2008安装导向运行到这里时: 请选择:对所有SQL Server 服务使用相同的账号: 但这里不能给他设置自己定义的账号和密码(例如下面设置它的账号为sa,密码为654321)就会发生错误: 解决方法如下图所示: 1.  首先要点击"对所有SQL Server 服务使用相同的账号" 然后会弹出一对话框让我们输入账户和密码:我们点击账户后面的下拉列表从中学则任意一个账户,在这里密码就不用填写

  • 解决vue.js在编写过程中出现空格不规范报错的问题

    找到build文件夹下面的webpack.base.conf.js文件. 然后打开该文件,找到图下这段代码,把他注释掉. 注释掉之后,再进行子页面等编写的时候,空格不规范的情况下也不会再报错啦.因为这个报错对于初学者来说实在头大.哈哈O(∩_∩)O哈哈~ 我标注的这些地方,原本是有严格的空格规范要求的,这些报错真是另人烦躁呀o(╥﹏╥)o 反正我把这个问题解决了,特别开心哒哒哒~~~ 以上这篇解决vue.js在编写过程中出现空格不规范报错的问题就是小编分享给大家的全部内容了,希望能给大家一个参考

随机推荐