FiveM: ตั้งค่า Reverse Proxy
คู่มือนี้ถูกสร้างขึ้นด้วยผลิตภัณฑ์ดังต่อไปนี้:
(รายละเอียดอาจแตกต่างกันไปตามผลิตภัณฑ์จากผู้ให้บริการต่างๆ แต่แนวคิดหลักยังคงเหมือนเดิม)
แนะนำ
เซิร์ฟเวอร์ reverse proxy คือเซิร์ฟเวอร์ที่ทำหน้าที่เป็นตัวกลางระหว่างผู้ใช้งานปลายทาง (ผู้เล่นของคุณ) กับเซิร์ฟเวอร์เกม FiveM ของคุณ ซึ่งมีประโยชน์มากสำหรับเซิร์ฟเวอร์ที่โดนโจมตี DDoS บ่อย ๆ เพราะมันช่วยเพิ่มชั้นความปลอดภัยและความน่าเชื่อถือโดยลดการมองเห็นโฮสต์หลัก และยังช่วยบรรเทาปัญหาได้อีกด้วย
ในคู่มือนี้ เราจะพาคุณไปดูขั้นตอนการตั้งค่า reverse proxy สำหรับเซิร์ฟเวอร์เกม FiveM ของคุณ โดยมี reverse proxy อยู่ 2 แบบในกรณีนี้ คือ connect proxy ที่ใช้สำหรับจุดเชื่อมต่อ connect และ server proxy ที่ใช้สำหรับจุดเชื่อมต่อเซิร์ฟเวอร์ซึ่งเป็นการ proxy แบบ raw TCP/UDP ทั้งสองแบบสามารถตั้งค่าแยกกันได้
เตรียมตัว
เพื่อที่จะตั้งค่า reverse proxy คุณจะต้องมี เซิร์ฟเวอร์ Linux (เช่น VPS) ที่จะโฮสต์ proxy server ของคุณ ในตัวอย่างนี้เราจะใช้ Ubuntu เป็นลีนุกซ์ดิสโทร แต่ขั้นตอนการติดตั้งน่าจะคล้ายกันกับลีนุกซ์ดิสโทรส่วนใหญ่
เราแนะนำให้ซื้อความเร็วเน็ตเวิร์คที่สูงขึ้นถ้าคุณวางแผนจะตั้งค่า server proxy โดยเฉพาะถ้าเซิร์ฟเวอร์ของคุณมีผู้เล่นจำนวนมาก เพราะ VPS ของคุณจะสตรีม raw TCP/UDP โดยตรงระหว่างไคลเอนต์ (ผู้เล่น) กับเซิร์ฟเวอร์เกม FiveM ของคุณ แต่ถ้าไม่ใช่ ก็ใช้เซิร์ฟเวอร์สเปคพื้นฐานที่มีการอัปเกรดน้อย ๆ ก็พอแล้วนะ :)
เรายังแนะนำให้ตั้งค่า proxy ด้วย โดเมน ที่คุณเป็นเจ้าของ คุณควรสร้างระเบียน A
บนโดเมนที่คุณต้องการใช้ (เช่น zapdocs.example.com
) ชี้ไปที่ที่อยู่ IP ของ VPS Linux ของคุณ นี่คือสิ่งที่ผู้เล่นจะใช้เชื่อมต่อกับเซิร์ฟเวอร์ ถึงแม้ว่าคุณจะใช้ที่อยู่ IP ของ proxy server แทนก็ได้ถ้าคุณต้องการ
การเข้าถึง VPS
เมื่อ VPS Linux ของคุณพร้อมแล้ว คุณจะต้องเชื่อมต่อเข้าไป ใช้คู่มือ SSH Initial Access ของเราเพื่อเรียนรู้วิธีการเชื่อมต่อ
การติดตั้ง Nginx
คุณจะใช้ Nginx เพื่อโฮสต์ reverse proxy server เพราะมันเป็นเว็บเซิร์ฟเวอร์โอเพ่นซอร์สที่มีประสิทธิภาพสูงและได้รับความนิยม
เมื่อคุณเข้าถึง VPS แล้ว ให้ใช้คำสั่งนี้เพื่อติดตั้ง Nginx
sudo apt install nginx
เมื่อติดตั้งเสร็จแล้ว คุณจะต้องปรับไฟร์วอลล์เพื่อให้บริการนี้เข้าถึงได้จากอินเทอร์เน็ต สำหรับคู่มือนี้ เราจะใช้ UFW Firewall เพราะ Nginx ลงทะเบียนตัวเองเป็นแอป ทำให้ปรับแต่งง่าย คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ UFW Firewall ได้จากคู่มือ Linux Security Tips ของเรา
ถ้าคุณใช้ไฟร์วอลล์อื่น (เช่น Iptables) โปรดตรวจสอบให้แน่ใจว่าได้เปิดพอร์ตที่เกี่ยวข้องให้ Nginx โดยเฉพาะพอร์ต 80 และ 443 ซึ่งเป็นพอร์ตที่บริการ nginx ใช้งาน
คุณสามารถตรวจสอบโปรไฟล์ของ Nginx ได้โดยรันคำสั่ง sudo ufw app list
ในกรณีนี้ เราจะเลือกตัวเลือก Nginx Full ซึ่งจะเปิดใช้งาน HTTP สำหรับทดสอบและ HTTPS สำหรับใช้งานจริง
sudo ufw allow 'Nginx Full'
เมื่อ Nginx ตั้งค่าเสร็จแล้ว ให้ลองเข้าถึงหน้าเว็บผ่านเบราว์เซอร์เพื่อเช็คว่าทำงานได้ตามที่คาดไว้หรือไม่ ถ้าหน้าทดสอบขึ้นตามปกติ คุณก็พร้อมจะไปต่อในคู่มือนี้ได้เลย
http://[your_serverip]
Connect Proxy
Connect proxy ใช้สำหรับ proxy จุดเชื่อมต่อ connect ของเซิร์ฟเวอร์เกม FiveM ของคุณ โดยสรุปคือ proxy server ของคุณจะรับคำขอที่มาที่จุดเชื่อมต่อ connect และส่งต่อไปยังเซิร์ฟเวอร์เกม FiveM หลักของคุณ ซึ่งช่วยซ่อนที่อยู่ IP จริงของโฮสต์ FiveM จากรายการเซิร์ฟเวอร์ ลดการมองเห็น
การตั้งค่า Nginx
เริ่มต้นด้วยการสร้างไฟล์ในไดเรกทอรี Nginx สำหรับโฮสต์ที่คุณเลือกไว้ตอนตั้งค่าโดเมน ในตัวอย่างนี้เราจะใช้ zapdocs.example.com
เหมือนเดิม
ใช้คำสั่งนี้เพื่อสร้างบล็อกเซิร์ฟเวอร์สำหรับโดเมนของคุณ โดยแทนที่ [your_domain]
ด้วยโดเมนของคุณเอง
sudo nano /etc/nginx/sites-available/[your-domain]
จากนั้นก็วางเทมเพลตนี้ลงในตัวแก้ไขและปรับค่าตามของคุณ
upstream backend {
# ที่อยู่ IP เซิร์ฟเวอร์ FiveM
server [your_fivem_serverip]:30120;
}
proxy_cache_path /srv/cache levels=1:2 keys_zone=assets:48m max_size=20g inactive=2h;
server {
listen 80;
listen [::]:80;
server_name [your_domain]; # เช่น: zapdocs.example.com
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
# จำเป็นสำหรับส่งผ่าน header การยืนยันตัวตนอย่างถูกต้อง
proxy_pass_request_headers on;
# จำเป็นเพื่อไม่ให้การเลื่อนเวลาปิดการเชื่อมต่อทันที
proxy_http_version 1.1;
proxy_pass http://backend;
}
# บล็อกเสริมสำหรับ proxy แบบแคช
location /files/ {
proxy_pass http://backend$request_uri;
add_header X-Cache-Status $upstream_cache_status;
proxy_cache_lock on;
proxy_cache assets;
proxy_cache_valid 1y;
proxy_cache_key $request_uri$is_args$args;
proxy_cache_revalidate on;
proxy_cache_min_uses 1;
}
}
เมื่อปรับค่าทั้งหมดให้ตรงกับการตั้งค่าของคุณแล้ว ให้บันทึกไฟล์และออกจาก nano โดยกด CTRL + X
ตามด้วย Y
เพื่อยืนยัน และกด ENTER
ตอนนี้คุณต้องเปิดใช้งานไฟล์บล็อกเซิร์ฟเวอร์โดยสร้าง symlink ไปยังไดเรกทอรี active
sudo ln -s /etc/nginx/sites-available/[your_filename] /etc/nginx/sites-enabled/[your_filename]
เพื่อให้แน่ใจว่าทุกอย่างถูกต้อง โดยเฉพาะเรื่องไวยากรณ์ ให้ใช้คำสั่ง sudo nginx -t
เพื่อตรวจสอบ ถ้าไม่มีปัญหาอะไร ให้รีสตาร์ท Nginx เพื่อให้บล็อกเซิร์ฟเวอร์ใหม่ทำงาน
systemctl reload nginx.service
เมื่อรีสตาร์ทบริการแล้ว ให้ลองเข้าถึงโดเมนที่คุณใช้สำหรับ reverse proxy ผ่านเบราว์เซอร์ ถ้าสำเร็จ หน้าควรโหลดเนื้อหาที่คุณตั้งค่าเป็นพารามิเตอร์ targetServer
ถ้าเจอปัญหา เราแนะนำให้เช็คล็อกเพื่อแก้ไขปัญหาด้วยคำสั่ง journalctl -f -u nginx.service
เพื่อดูข้อผิดพลาดที่อาจเกิดขึ้น
การตั้งค่า FiveM
เมื่อ proxy ตั้งค่าเสร็จแล้ว คุณจะต้องปรับค่าบางอย่างในไฟล์ server.cfg
บนเซิร์ฟเวอร์เกม FiveM ของคุณ
เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ โดยแทนค่าด้วยของคุณเอง
# ป้องกันไม่ให้รายการเซิร์ฟเวอร์แสดงเซิร์ฟเวอร์ของคุณด้วย IP จริง
set sv_forceIndirectListing true
# ให้ backend รายการเซิร์ฟเวอร์เรียกโดเมนของคุณแทนค่าเริ่มต้น (เช่น: zapdocs.example.com)
set sv_listingHostOverride "[your_domain]"
# รายการเครือข่าย IPv4 แบบเว้นวรรคใน CIDR ที่อนุญาต 'X-Real-IP' และข้าม rate limiter
set sv_proxyIPRanges "[your_proxy_serverip]/32"
# จุดเชื่อมต่อจริงที่เซิร์ฟเวอร์ของคุณโฮสต์ หรือ proxy จุดเชื่อมต่อเซิร์ฟเวอร์หลายตัว
set sv_endpoints "[your_fivem_serverip]:30120"
บันทึกไฟล์แล้วรีสตาร์ทเซิร์ฟเวอร์เกม ครั้งถัดไปที่เซิร์ฟเวอร์เริ่มทำงาน โดเมนของคุณจะชี้ไปยังเซิร์ฟเวอร์เกม FiveM ของคุณ ทำให้สามารถใช้เชื่อมต่อได้
คุณสามารถตรวจสอบว่าทำงานได้โดยลองเข้าถึง: https://[your_domain]/info.json
ถ้าขึ้นข้อมูลถูกต้อง แสดงว่า connect proxy ของคุณทำงานดี
Server Proxy
Server proxy ใช้สำหรับ proxy จุดเชื่อมต่อเซิร์ฟเวอร์ไปยังเซิร์ฟเวอร์เกม FiveM ของคุณ ซึ่งจะ proxy raw TCP/UDP endpoints และสตรีมโดยตรง
การตั้งค่า Nginx
สำหรับส่วนนี้ คุณจะใช้โมดูล stream ที่เป็นส่วนหนึ่งของ Nginx เปิดไฟล์ nginx.conf
ด้วย nano
sudo nano /etc/nginx/nginx.conf
จากนั้นวางเนื้อหาต่อไปนี้ใน root scope โดยแทนค่าด้วยของคุณเอง
stream {
upstream backend {
server [your_fivem_serverip]:30120;
}
server {
listen 30120;
proxy_pass backend;
}
server {
listen 30120 udp reuseport;
proxy_pass backend;
}
}
เมื่อปรับค่าทั้งหมดให้ตรงกับการตั้งค่าของคุณแล้ว ให้บันทึกไฟล์และออกจาก nano โดยกด CTRL + X
ตามด้วย Y
เพื่อยืนยัน และกด ENTER
ตรวจสอบไวยากรณ์ด้วยคำสั่ง sudo nginx -t
ถ้าไม่มีปัญหา ให้รีสตาร์ท Nginx เพื่อให้การตั้งค่าใหม่ทำงาน
systemctl reload nginx.service
เมื่อรีสตาร์ทบริการแล้ว ให้ลองเชื่อมต่อกับเซิร์ฟเวอร์เกมผ่านโดเมน proxy ถ้าสำเร็จ คุณจะเชื่อมต่อกับเซิร์ฟเวอร์เกมที่ตั้งค่าเป็นพารามิเตอร์ targetServer
ได้เลย ถ้าเจอปัญหา ให้เช็คล็อกด้วยคำสั่ง journalctl -f -u nginx.service
เพื่อแก้ไขข้อผิดพลาด
การตั้งค่า FiveM
เมื่อ proxy ตั้งค่าเสร็จแล้ว คุณจะต้องปรับค่าในไฟล์ server.cfg
บนเซิร์ฟเวอร์เกม FiveM ของคุณ
ถ้าคุณตั้งค่า set sv_endpoints
ไปแล้วตอนตั้งค่า Connect Proxy คุณสามารถข้ามขั้นตอนนี้ได้เลย
เพิ่มบรรทัดนี้ลงในไฟล์ โดยแทนค่าด้วยของคุณเอง
# จุดเชื่อมต่อจริงที่เซิร์ฟเวอร์ของคุณโฮสต์ หรือ proxy จุดเชื่อมต่อเซิร์ฟเวอร์หลายตัว
set sv_endpoints "[your_fivem_serverip]:30120"
บันทึกไฟล์แล้วรีสตาร์ทเซิร์ฟเวอร์เกม ครั้งถัดไปที่เซิร์ฟเวอร์เริ่มทำงาน raw TCP/UDP endpoints จะสตรีมผ่าน reverse proxy ของคุณ
คุณสามารถตรวจสอบได้โดยดูที่อยู่ IP ของผู้เล่น ซึ่งควรเป็นที่อยู่ IP ของ proxy server ตามด้วยพอร์ตที่สุ่มจัดสรร
ใบรับรอง SSL
เมื่อคุณตั้งค่า reverse proxy สำหรับ FiveM เสร็จแล้ว เราแนะนำอย่างยิ่งให้เพิ่มใบรับรอง SSL ให้กับโดเมนที่ใช้ เพื่อให้เว็บไซต์ส่งข้อมูลอย่างปลอดภัยผ่าน HTTPS
โปรดดูคู่มือ Install Certbot ของเรา ซึ่งครอบคลุมขั้นตอนทั้งหมดในการขอและต่ออายุใบรับรอง SSL อัตโนมัติสำหรับโดเมนของคุณ
สรุป
ยินดีด้วย! คุณตั้งค่า reverse proxy สำหรับเซิร์ฟเวอร์เกม FiveM ของคุณสำเร็จแล้ว ซึ่งช่วยเพิ่มความปลอดภัย ความน่าเชื่อถือ และประสิทธิภาพ ถ้ามีคำถามหรืออยากได้ความช่วยเหลือเพิ่มเติม อย่าลังเลที่จะติดต่อทีมซัพพอร์ตของเรา ที่พร้อมช่วยเหลือคุณทุกวัน! 🙂