ตัว nginx มีข้อดีตรงที่จัดการไฟล์ที่ไม่เปลี่ยนตาม user เวลา ( static asset ) เช่น css, jpeg, png, gif, ico พวกนี้ เราไม่ได้เปลี่ยนแปลงบ่อย ๆ การที่สั่งให้ chrome cache เอาไว้จะช่วยให้ประหยัด bandwidth ไว้เยอะเลย
- ติดตั้ง nginx โดยคำสั่ง
brew install nginx
- ดูการติดตั้งโดยใช้
brew info nginx
จะเห็น message กลับมา เช่น
==> nginx: stable 1.27.0 (bottled), HEAD
HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server
https://nginx.org/
Installed
/opt/homebrew/Cellar/nginx/1.27.0 (27 files, 2.4MB) *
Poured from bottle using the formulae.brew.sh API on 2024-07-20 at 19:38:15
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/n/nginx.rb
License: BSD-2-Clause
==> Dependencies
Required: openssl@3 ✔, pcre2 ✔
==> Options
–HEAD
Install HEAD version
==> Caveats
Docroot is: /opt/homebrew/var/www
The default port has been set in /opt/homebrew/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.
nginx will load all files in /opt/homebrew/etc/nginx/servers/.
To restart nginx after an upgrade:
brew services restart nginx
Or, if you don’t want/need a background service you can just run:
/opt/homebrew/opt/nginx/bin/nginx -g daemon\ off\;
==> Analytics
install: 12,297 (30 days), 43,162 (90 days), 162,914 (365 days)
install-on-request: 12,264 (30 days), 42,989 (90 days), 162,428 (365 days)
build-error: 13 (30 days)
จะเห็นข้อมูลสำคัญ 3 จุดคือ- เวอร์ชั่นที่ติดตั้งคือ 1.27.0
- document root จะอยู่ที่ Docroot is: /opt/homebrew/var/www
- ตัวไฟล์ config จะอยู่ที่ /opt/homebrew/etc/nginx/nginx.conf
- เปิดไฟล์ config ขึ้นมาเช่น
nano /opt/homebrew/etc/nginx/nginx.conf
เพิ่มใน server {
…
…
}
ให้เพิ่ม
#cache static asset
location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico)$ {
access_log off;
expires 7d;
log_not_found off;
} - เทสว่าเขียน configuration ถูกมั๋ยโดยใช้คำสั่ง
nginx -T
ถ้าไม่มีแจ้ง error กลับมาก็ใช้ได้ - restart nginx โดยคำสั่ง
brew services restart naginx
- ทดสอบโดยการเรียก
http://localhost/favicon.ico
ถ้าเปิด developer mode เท็บ Network column Transfered ควรจะเป็น cached