ในปัจจุบันมี web server อยู่สองเจ้าที่ได้รับความนิยมคือ apache2 และ nginx สองเจ้านี้จะมีขอดีข้อเสียงต่างกัน nginx จะมีข้อดีคือ สามารถรองรับ user concurrent และ request static file ได้ดีกว่า apache2 ส่วน apache2 มีข้อดีคือ PHP ซึ่ง PHP ของ nginx นั้น จะทำงานผ่านโมดูล FastCGI อีกทีหนึ่ง ซึ่งจะได้ Performance ที่ช้ากว่า mod_php ของ apache2 ที่ทำงานแบบ
Native จึงนิยมนําทั้งสองตัวมาทํางานร่วมกันคือ ถ้า user เรียก static file เช่น ไฟล์ภาพ html … จะเป็นหน้าที่ของ nginx แต่ถ้า user เรียกไฟล์ php ก็จะเป็นหน้าที่ของ apache2 เพื่อเพิ่มประสิทธิภาพของ web server
ขั้นตอนการติดตั้ง nginx
ติดตั้ง nginx ด้วยคําสั่ง
sudo apt-get install nginx -y
เปิดไฟล์ “default” เพื่อแก้ไขค่า config ของ web server ด้วยคําสั่ง
sudo nano /etc/nginx/sites-available/default
แก้ไขค่า config ตามนี้
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www; #ใส่ path ที่อยู่ของเว็บที่ต้องการ
index index.php index.html index.htm; #ชื่อไฟล์ index
server_name localhost; #Domain name ของเว็บเรา เช่น thitiblog.com
location / { #กรณีที่เรียกไฟล์ภายใต้ root path จะทําตาม script ด่านล่าง
#pass proxy ไปที่ apache2(127.0.0.1:8080)
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
#กรณีที่เรียกไฟล์ static file ต่างๆจะใช้ nginx ในการประมวลผล
#ไม่pass proxy ไปที่ apache2
location ~* ^.+.(pdf|gif|jpg|jpeg|png|ico|wmv|3gp|avi|mpg|mpeg|mp4|flv|mp3|mid|js|css|html|htm|wml)${
}
}
เปิดการใช้งาน gzip ในการบีบอัดไฟล์ก่อนส่งมาที่ Browserด้วยคําสั่ง
sudo nano /etc/nginx/nginx.conf
แก้ตามนี้
gzip on;
gzip_disable "msie6";
gzip_vary on;
# gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
เสร็จสิ้นการติดตั้ง nginx ขั้นตอนต่อไป ติดตั้ง apache2
ติดตั้ง Apache2 และ config เพื่อใช้งานร่วมกับ nginx
ในบทความนี้จะไม่อธิบายวิธีการติดตั้ง apache2 เพราะได้เขียนไว้แล้วสามารถอ่านเพิ่มเติมได้ที่ วิธีติดตั้ง Apache, MySQL, PHP, phpMyAdmin ใน Ubuntu เมื่อติดตั้งทุกอย่างเรียบร้อยก็ config port ของ apache2 ให้เป็น port 8080 ตามที่เราได้ pass proxy ของ nginx ไว้ในตอนต้น
sudo nano /etc/apache2/ports.conf
แก้จากเดิม 80 เป็น 8080
Listen 8080
สร้าง file config VirtualHost ของ apache2 ด้วยคําสั่ง
sudo nano /etc/apache2/sites-available/myconfig
myconfig เป็นชื่อของ file config เราสามารถตั้งได้ตามต้องการ ใส่ script ดังนี้ โดยเปลี่ยนข้อมูลตามเว็บของท่าน
<VirtualHost *:8080>
DocumentRoot /var/www #path ที่อยู่ของเว็บ
ServerAdmin [email protected]
ServerName thitiblog.com
ServerAlias thitiblog.com *.thitiblog.com #Domain name
<Directory /var/www>
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error-thitiblog.log
CustomLog ${APACHE_LOG_DIR}/access-thitiblog.log combined
</VirtualHost>
save โดยกด Ctrl+x แล้วกด y เปิดใช้งาน script config เมื่อซักครู่นี้โดยใช้คําสั่ง
sudo a2ensite myconfig
เปิด gzip Compression ของ php
sudo nano /etc/php5/apache2/php.ini
แก้ตรงหัวข้อ
zlib.output_compression = On
Restart service nginx and apache2
sudo service nginx restart
sudo service apache2 restart