การส่งไฟล์สแตติกของโดเมนผ่าน Nginx บนเซิร์ฟเวอร์ VPS
การส่งไฟล์สแตติกบน NodeJS หรือบน Express นั้นทำได้โดยใช้ static-server ที่จริงแล้วไม่แนะนำให้ทำแบบนี้ เพราะทำงานได้ช้า
วิธีที่ดีกว่าคือการส่งไฟล์สแตติก
ผ่าน Nginx สำหรับสิ่งนี้ โดเมน
ต้องมีการตั้งค่าเฉพาะ
ซึ่งประกอบด้วย regex และพาธไปยัง
โฟลเดอร์ไฟล์สแตติก สมมติว่าในตัวอย่าง
โฟลเดอร์ไฟล์สแตติกในโดเมนของเราคือโฟลเดอร์ public
ในกรณีนี้เราจะตั้งค่า
ดังต่อไปนี้:
server_name test1.com;
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js|swf|txt|ico)$ {
root /var/www/test1.com/public;
}
ซึ่งค่อนข้างไม่สะดวกที่ชื่อ โดเมนเราต้องเขียนสองครั้ง หากชื่อนั้นตรงกับโฟลเดอร์ของเว็บไซต์ (และเพื่อความสะดวกของเรา มันตรงกัน) ปัญหาสามารถแก้ไขได้ด้วยวิธี ต่อไปนี้:
server_name test1.com;
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js|swf|txt|ico)$ {
root /var/www/$server_name/public;
}
ลองรวมการตั้งค่าทั้งหมดของเรา เข้าด้วยกันแล้วจะได้ดังนี้:
server {
listen 80;
server_name test1.com;
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js|swf|txt|ico)$ {
root /var/www/$server_name/public;
}
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
ตั้งค่าการส่งไฟล์สแตติกสำหรับ เว็บไซต์ทดสอบทั้งสองไซต์ ทดสอบ ผ่านเบราว์เซอร์