ติดตั้ง Nginx เพื่อใช้งานร่วมกับ Apache2

24 Jun 2016

Share to:

ในปัจจุบันมี 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

Suggestion blogs

วิธีการโฮสต์ไฟล์ IPFS ให้ออนไลน์ตลอดไป

สวัสดีครับ โดยปกติเมื่อ Add File เข้า IPFS แล้ว IPFS จะทําการ Pin File ให้โดยอัตโนมัติ หมายความว่า File นั้นจะยัง Online อยู่ ใน IPFS Network แต่เมื่อใดเราปิดเครื่อง หรือปิด IPFS Daemon แล้ว File นั้นจะถูกลบออกจาก IPFS Network ในเวลาต่อมา (ประมาณ 24 ชั่วโมง) ดังนั้นถ้าต้องการจะให้ File คงอยู่ตในลอดไป จะต้องให้เครื่องคอมพิวเตอร์ หรือ Node อื่นๆ Pin File ของเราไว้ในระบบด้วย ยิ่งมี Node ที่ Pin File ของเราเยอะ File ของเรานั้นก็จะอยู่ในระบบ ไม่หายไปไหน ถึงแม้ว่าเราปิดเครื่องของเราแล้วก็ตาม

Arduino ตอน2 ส่วนประกอบของ Arduino Board

สวัสดีครับ สําหรับการเริ่มต้น Arduino เราจําเป็นจะต้องรู้จักส่วนต่างๆของ Arduino กันก่อน เพื่อเราจะได้ใช้งานได้อย่างถูกต้อง และไม่ทําให้ Arduino Board เกิดความเสียหาย

pointer c/c++

pointer เป็นชนิดข้อมูลประเภทหนึ่งที่สร้างจากชนิดข้อมูลแบบพื้นฐานทั่วไป โดยชนิดข้อมูลแบบ pointer จะแตกต่างกับชนิดข้อมูลพื้นฐานตรงที่ชนิดข้อมูลแบบพื้นฐานจะเก็บและดึงข้อมูลจากตัวแปรโดยตรง แต่ชนิดข้อมูลแบบ pointer จะเก็บค่าที่อยู่(Address) ของตัวแปรอื่น และใช้ค่าที่อยู่นี้อ้างอิงไปยังข้อมูลที่เก็บอยู่ในตัวแปรนั้นอีกที เพื่อทําการเก็บและดึงข้อมูลจากตัวแปรนั้นอีกที


Copyright © 2019 - 2024 thiti.dev |  v1.34.0 |  Privacy policy | 

Build with ❤️ and Astro.

Github profile   Linkedin profile   Instagram   X profile   Youtube channel   Telegram   Email contact   วงแหวนเว็บ