Nginx 擋掉某個 IP 或 網段

Nginx 想要擋掉某個 IP,作法如下:(下述為 Debian / Ubuntu Linux 的路徑)

  1. vim /etc/nginx/sites-enabled/blockips.conf # 輸入下述即可
    deny 123.123.123.123;
  2. sudo /etc/init.d/nginx restart
  • 註1:這是 Global 都全部擋掉此 IP,想要分別於 VirtualHost 擋的話,再自行寫進去裡面即可
  • 註2:blockips.conf 這個檔名可以隨便取

blockips.conf 裡面,若要擋掉 subnet,可見下述:

  • deny 123.123.123.0/24;

只允許某個IP 或 網段:

  • allow 1.2.3.4/24;
  • deny all;

更多範例可參考下述:(取自:Module ngx_http_access_module)

location / {
   deny  192.168.1.1;
   allow 192.168.1.0/24;
   allow 10.1.1.0/16;
   allow 2001:0db8::/32;
   deny  all;
}

URL rewrite 的 + 與 %20 的問題

現在流行 Rewrite 讓網址美化,所以 Web server (Nginx、Apache...) 都會使用 rewrite module 來達成。

不過 Rewrite 常常會遇到各種符號的問題,例如下述:

上述在 Apache 的 mod_rewrite 會遇到的問題大概都解決了,但是現在遇到 Nginx + fastcgi 的模式,開始又有一些其它問題出現,如下範例:

  1. 標題: dvd player
  2. 網址自動轉換成: dvd+player
  3. 再到 PHP 端就用 dvd+player 去找,就找不到此篇文章
  4. 這問題要怎麼解決呢?

閱讀全文〈URL rewrite 的 + 與 %20 的問題〉

Nginx 的 SSL 設定檔範例

關於 SSL 的產生、建立、移除密碼... 等等,請見下述兩篇文章:

此篇假設已經將 SSL Key 產生完畢,在此只有 Nginx SSL 的設定檔範例。

閱讀全文〈Nginx 的 SSL 設定檔範例〉

Apache2 與 Nginx 移除 SSLv2、SSLv3 支援

SSL (v2、v3) 最近有些安全性問題產生, 建議 Web Server 和瀏覽器都不要支援 SSLv2 和 SSLv3, 那到底有何影響? 又該怎麼做呢?

閱讀全文〈Apache2 與 Nginx 移除 SSLv2、SSLv3 支援〉

Apache2、Nginx SSL 自動輸入密碼、移除 Key 密碼

Apache2、Nginx 設定完成 SSL 後, 每次重新啟動都會詢問 passphrase key 的密碼, 如何自動輸入, 或者將此移除呢?

閱讀全文〈Apache2、Nginx SSL 自動輸入密碼、移除 Key 密碼〉

Nginx Connection 不夠用 的參數調整

機器 Loading 是 "0.x", 但是連線總是會出現找不到資料, 重新、再試一次的訊息, 如下述:

HTTP request sent, awaiting response... No data received.
Retrying.

直覺猜測就是 Connection、檔案數、TCP... 等滿了的問題, 於是作些調整.

註: netstat -ant | grep TIME_WAIT | wc -l # TIME_WAIT 數值應該很高

閱讀全文〈Nginx Connection 不夠用 的參數調整〉

Nginx 自動優化前端頁面的模組 - ngx_pagespeed

Google 為 Apache 開發 mode_pagespeed 的 Module(更多說明可見此篇: Apache 自動優化前端頁面的模組 - mod_pagespeed), 使站長可以用最懶惰的方式讓網站速度變快.

註: mod_pagespeed 會幫忙做 JavaScript、CSS 壓縮,合併, 圖片的壓縮、Resize, HTML 移除空白 等等的事情.

閱讀全文〈Nginx 自動優化前端頁面的模組 - ngx_pagespeed〉

Nginx 出現 500 Error 修復 (too many open file, connection)

Nginx 出現 500 Error, 錯誤訊息只能從 Log 查到, 有遇到下述兩種狀況:

  1. socket() failed (24: Too many open files) while connecting to upstream
  2. 512 worker_connections are not enough while connecting to upstream

在此紀錄解決方法.

閱讀全文〈Nginx 出現 500 Error 修復 (too many open file, connection)〉