Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: Nginx

gzip_types settings in Nginx

Posted on 2022 年 9 月 8 日2022 年 9 月 8 日 By 日落 在〈gzip_types settings in Nginx〉中尚無留言

以前一直誤會 gzip_types 可以使用 wildcrad * 來表示:

gzip on;
gzip_types text/* ;

事實上,上面的表達方式 Nginx 不吃,必須一條一條詳細列出來。

More “gzip_types settings in Nginx” »

Tags:Nginx

Ubuntu 上 LNMP 的 PPA

Posted on 2022 年 2 月 14 日2022 年 2 月 14 日 By 日落 在〈Ubuntu 上 LNMP 的 PPA〉中尚無留言

default packages 更新速度比較慢,所以後來都改用 3rd-party 的 PPA 來裝 LNMP 環境。

以 PHP 來說的話,主要會以 oerdnj 的 PPA 為主:https://launchpad.net/~ondrej/+archive/ubuntu/php

其他則是:

  • Nginx https://launchpad.net/~nginx/+archive/ubuntu/stable
  • Redis https://launchpad.net/~redislabs/+archive/ubuntu/redis

MySQL / Percona / MariaDB 更新、patch 速度沒那麼快的,則是直接使用預設的 packages 來安裝。

Tags:Linux, MySQL, Nginx, PHP, 網路架站

在 Nginx 上啟用 gzip 縮短網站資源傳輸時間

Posted on 2021 年 12 月 16 日2021 年 12 月 16 日 By 日落 在〈在 Nginx 上啟用 gzip 縮短網站資源傳輸時間〉中尚無留言

網站上常見的資源,像是 HTML、CSS、JacaScript、JSON 等等,其實都是文字組成的,而文字壓縮以後大小可以縮小到剩下 10% 左右,因此有些人主張先將圖片轉成 data URI 在用 gzip 壓縮。

Nginx 可以在遇到特定類型的檔案內容時,啟用 gzip 壓縮後再傳輸資料,透過這個方法來加快傳輸速度:

server {
    ....

    gzip on;
    gzip_disable "MSIE [1-6].(?!.*SV1)";   # 排除不支援的瀏覽器
}

再來要注意,不是所有類型的檔案壓縮以後檔案會變小,像是圖片、影片就不適合使用 gzip 壓縮。這邊新增 MIME type 類型,讓 Nginx 只壓縮真正有效的檔案類型:

  • HTML
  • CSS
  • JavaScript
  • plain text
  • xml
  • Java
  • JSON

所以用 gzip_types 來更新一下 Nginx 的設定檔:

server {
    gzip on;
    gzip_disable "MSIE [1-6].(?!.*SV1)";
    gzip_types text/x-component text/css application/x-javascript application/javascript text/javascript text/x-js text/richtext text/plain text/xml;
}

另外有個注意事項,gzip 可以調整壓縮等級:使用較高的的壓縮率,可以讓檔案盡可能的縮小,但壓縮會花掉較多的時間;使用較低的壓縮率,檔案大小只會縮小一點點,但是只需要一瞬間的時間。所以這個參數就要取決於網站的特性、主機的硬體配備來調整。比較中庸的設定如下:

server {
    gzip on;
    gzip_disable "MSIE [1-6].(?!.*SV1)";
    gzip_types text/x-component text/css application/x-javascript application/javascript text/javascript text/x-js text/richtext text/plain text/xml;
    gzip_comp_level 6;  # from 0 to 9
}

Tags:Nginx, 網路架站

使用 Nginx 阻擋特殊的 HTTP methods

Posted on 2021 年 12 月 12 日2021 年 12 月 12 日 By 日落 在〈使用 Nginx 阻擋特殊的 HTTP methods〉中尚無留言

追 logs 時,留意到一些 bot 都會特別去戳 HTTP CONNECT 這個 method,看了文件才知道可能是在偵測主機是否可以當成跳板來使用,因此針對這些 methods 建立規則。

多數平台應該都會使用 RESTful 的概念來設計 API,所以會用到的應該是 GET, POST, PUT, DELETE:

if ($request_method !~ ^(GET|HEAD|POST|DELETE)$ ) {
    return 444;
}

這個方法用了一陣子,直到有次發現 WordPress 的某些 API 一直故障、出錯,但又不是功能導致的問題,使用開發人員工具以後,才知道不是只有 RESTful 定義的幾個 HTTP method 會被用到。

最後改成只擋比較有風險的二個 HTTP method:

if ($request_method ~ ^(CONNECT|TRACE)$ ) {
    return 444;
}
Tags:Nginx

Nginx 同時使用 HTTP/1.1 和 HTTP/2 的設定方式

Posted on 2021 年 12 月 5 日2021 年 12 月 5 日 By 日落 在〈Nginx 同時使用 HTTP/1.1 和 HTTP/2 的設定方式〉中尚無留言

Nginx 目前已經支援 HTTP/2 協定,但若在 listen 參數中使用一般的語法來做設定,Nginx 會讓所有的 virtual host 全部一起走相同的 HTTP 協定:

server {
    listen 443 ssl http2;
    
    # ...
}

上面這個寫法,會讓所有 listen 443 的 virtual host 全部都走 HTTP/2。

要讓不同 host 使用不同 HTTP 協定,必須使用不同的 IP 來設定 virtual host:

server {
    listen IP:443 ssl;
    
    # ...
}

server {
    listen NEW_IP:443 ssl http2;
    
    # ...
}

參考資料:Can I enable HTTP/2 for specific server blocks (virtual hosts) only, on Nginx?

Tags:Nginx

文章分頁

1 2 ... 4 下一頁

其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.