จากการเลือกเซิร์ฟเวอร์ Apache และ Nginx LAMP VS LEMP ที่มีทางออกที่ 3 คือ เอาข้อดีของทั้งสองมาใช้คู่กัน ทำตัวอย่างการ config Apache และ Nginx มาใช้ด้วยกัน เรียก เทคนิคนี้ว่า nginx as reverse proxy ทำได้โดยการเซ็ต
Virtual directory ตามตัวอย่าง
/etc/apache2/sites-available/pitt.plusmagi.com.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <VirtualHost *:80> <Directory /usr/share/www/pitt.plusmagi.com/published> #directive needed in Apache 2.4: Require all granted AllowOverride All Options FollowSymLinks MultiViews </Directory> DefaultLanguage th_TH DocumentRoot /usr/share/www/pitt.plusmagi.com/published #Log files CustomLog ${APACHE_LOG_DIR}/pitt.plusmagi.com.access.log combined ErrorLog ${APACHE_LOG_DIR}/pitt.plusmagi.com.error.log #rewrite RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L] #security php_admin_value open_basedir "/usr/share/www/pitt.plusmagi.com/published" #server ServerAdmin phunsanit@gmail.com ServerAlias www.plusmagi.com ServerName pitt.plusmagi.com </VirtualHost> |
/etc/nginx/sites-available/pitt.plusmagi.com.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | server { http2 on; http3 on; server_name pitt.plusmagi.com; location ~ /\.ht { deny all; } location ~ \.php$ { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|eot)$ { access_log off; add_header Cache-Control "public"; expires max; root /usr/share/www/pitt.plusmagi.com/published; } # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ /index.php; } } |
จาก config ทั้ง 2 ไฟล์ หลักการคือ ให้แต่ละ server ทำสิ่งที่ตัวเองถนัด คือ Apache จะเหมาะกับการทำงานในส่วน PHP และตัว Nginx เหมาะกับการที่ใช้ส่ง static files ( CSS, JavaScript, fonts, ภาพ ) ที่จะไม่ต่างกันในแต่ละ user
ทดสอบได้โดยการ restart server และดูด้วยคำสั่ง sudo lsof -i :80 และ sudo lsof -i :8080
ถ้าต้องการ คน set server ให้ทำแบบนี้ ทักมาได้ครับ
อ่านเพิ่มเติม