總結(jié)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 根據(jù)系統(tǒng)后端發(fā)送的 header 來進(jìn)行設(shè)置。
注:默認(rèn)值的話,就會上面出現(xiàn)上面那樣出現(xiàn)錯誤
Nginx 緩存刷新問題
在使用 Nginx 的過程中,因為 Nginx 本地使用了緩存,然后發(fā)布了靜態(tài)資源后, CDN 回源的時候,發(fā)現(xiàn)沒有正?;卦矗?jīng)過查詢發(fā)現(xiàn),是因為 Nginx 本地有緩存,而有沒有對緩存進(jìn)行刷新的原因,要刷新本地緩存,可以安裝 Purge 模塊。
Nginx 的緩存設(shè)置:
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(/.*)
{
#設(shè)置只允許指定的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 模塊,是因為我已經(jīng)編譯過了,然后在原有的編譯參數(shù)后面加上:
--add-module=/home/ngx_cache_purge-1.5
退出 Nginx ,并重新啟動:
./nginx -s quit
./nginx
配置 Puerge :
location ~ /purge(/.*)
{
#設(shè)置只允許指定的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 緩存的命令即為:
通用的方式就是:
其中 uri 就是你的 URL “http://test.com/test/test.js” 的 “test/test.js” 部分。
相關(guān)文章
Nginx利用Logrotate實現(xiàn)日志分割的詳細(xì)過程
nginx日志分割是很常見的運(yùn)維工作,下面這篇文章主要給大家介紹了關(guān)于Nginx利用Logrotate日志分割的詳細(xì)過程,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05Mac中使用Nginx實現(xiàn)80端口轉(zhuǎn)發(fā)8080端口
端口轉(zhuǎn)發(fā)(Port forwarding),有時被叫做隧道,是安全殼(SSH) 為網(wǎng)絡(luò)安全通信使用的一種方法。端口轉(zhuǎn)發(fā)是轉(zhuǎn)發(fā)一個網(wǎng)絡(luò)端口從一個網(wǎng)絡(luò)節(jié)點(diǎn)到另一個網(wǎng)絡(luò)節(jié)點(diǎn)的行為,其使一個外部用戶從外部經(jīng)過一個被激活的NAT路由器到達(dá)一個在私有內(nèi)部IP地址(局域網(wǎng)內(nèi)部)上的一個端口2017-09-09Apache和Nginx實現(xiàn)虛擬主機(jī)的3種方式小結(jié)
Apache是一個模型化的服務(wù)器,可以運(yùn)行在幾乎所有的服務(wù)器上。其屬于應(yīng)用服務(wù)器,這篇文章主要介紹了Apache和Nginx實現(xiàn)虛擬主機(jī)的3種方式,需要的朋友可以參考下2023-11-11Nginx出現(xiàn)403?Forbidden的幾種簡單解決方式
這篇文章主要介紹了Nginx出現(xiàn)403?Forbidden的幾種解決思路,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12nginx如何實現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈
這篇文章主要為大家介紹了nginx實現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11