ค้นหาเว็บไซต์

วิธีการเปลี่ยนพอร์ต Apache HTTP ใน Linux


เซิร์ฟเวอร์ Apache HTTP เป็นหนึ่งในเว็บเซิร์ฟเวอร์ที่มีการใช้งานมากที่สุดในอินเทอร์เน็ตในปัจจุบัน โดยคำนึงถึงความยืดหยุ่น ความเสถียร และคุณสมบัติต่างๆ มากมาย ซึ่งบางส่วนยังไม่มีให้บริการในเว็บเซิร์ฟเวอร์อื่นในขณะนี้ เช่น คู่แข่ง Nginx

คุณลักษณะที่สำคัญที่สุดบางประการของ Apache ได้แก่ ความสามารถในการโหลดและรันโมดูลประเภทต่างๆ และการกำหนดค่าพิเศษในขณะรันไทม์ โดยไม่จำเป็นต้องหยุดเซิร์ฟเวอร์จริงๆ หรือที่แย่กว่านั้นคือ การรวบรวมซอฟต์แวร์ทุกครั้งที่มีการเพิ่มโมดูลใหม่มากที่สุดและมีบทบาทพิเศษ โดยไฟล์ .htaccess ซึ่งสามารถเปลี่ยนแปลงการกำหนดค่าเว็บเซิร์ฟเวอร์เฉพาะสำหรับไดเร็กทอรี webroot

ตามค่าเริ่มต้น เว็บเซิร์ฟเวอร์ Apache จะได้รับคำสั่งให้ฟังการเชื่อมต่อขาเข้าและเชื่อมโยงบนพอร์ต 80 หากคุณเลือกใช้การกำหนดค่า TLS เซิร์ฟเวอร์จะรับฟังการเชื่อมต่อที่ปลอดภัยบนพอร์ต 443

ในการสั่งให้เว็บเซิร์ฟเวอร์ Apache เชื่อมโยงและรับฟังการรับส่งข้อมูลเว็บบนพอร์ตอื่นที่ไม่ใช่พอร์ตเว็บมาตรฐาน คุณจะต้องเพิ่มคำสั่งใหม่ที่มีพอร์ตใหม่สำหรับการผูกในอนาคต

ในระบบที่ใช้ Debian/Ubuntu ไฟล์การกำหนดค่าที่ต้องการแก้ไขจะเป็นไฟล์ /etc/apache2/ports.conf และบน RHEL/CentOS การแจกแจงแก้ไขไฟล์ /etc/httpd/conf/httpd.conf

เปิดไฟล์เฉพาะสำหรับการแจกจ่ายของคุณเองด้วยโปรแกรมแก้ไขข้อความคอนโซล และเพิ่มคำสั่งพอร์ตใหม่ดังที่แสดงในข้อความที่ตัดตอนมาด้านล่าง

nano /etc/apache2/ports.conf     [On Debian/Ubuntu]
nano /etc/httpd/conf/httpd.conf  [On RHEL/CentOS]

ในตัวอย่างนี้ เราจะกำหนดค่าเซิร์ฟเวอร์ Apache HTTP ให้รับฟังการเชื่อมต่อบนพอร์ต 8081 ตรวจสอบให้แน่ใจว่าคุณเพิ่มคำสั่งด้านล่างในไฟล์นี้ หลังจากคำสั่งที่สั่งให้เว็บเซิร์ฟเวอร์ฟังบนพอร์ต 80 ดังที่แสดงในภาพด้านล่าง

Listen 8081

หลังจากที่คุณเพิ่มบรรทัดด้านบนแล้ว คุณจะต้องสร้างหรือแก้ไขโฮสต์เสมือนของ Apache ในการเผยแพร่แบบ Debian/Ubuntu เพื่อเริ่มกระบวนการเชื่อมโยง โดยเฉพาะกับข้อกำหนด vhost ของคุณเอง

ในการแจกแจง CentOS/RHEL การเปลี่ยนแปลงจะถูกนำไปใช้กับโฮสต์เสมือนเริ่มต้นโดยตรง ในตัวอย่างด้านล่าง เราจะแก้ไขโฮสต์เสมือนเริ่มต้นของเว็บเซิร์ฟเวอร์ และสั่งให้ Apache ฟังการรับส่งข้อมูลเว็บจากพอร์ต 80 ไปยังพอร์ต 8081

เปิดและแก้ไขไฟล์ 000-default.conf และเปลี่ยนพอร์ตเป็น 8081 ดังที่แสดงในภาพด้านล่าง

nano /etc/apache2/sites-enabled/000-default.conf 

สุดท้าย หากต้องการใช้การเปลี่ยนแปลงและทำให้ Apache เชื่อมโยงกับพอร์ตใหม่ ให้รีสตาร์ท daemon และตรวจสอบตารางซ็อกเก็ตเครือข่ายท้องถิ่นโดยใช้ netstat หรือ คำสั่ง ss พอร์ต 8081 ในการฟังควรแสดงในตารางเครือข่ายเซิร์ฟเวอร์ของคุณ

systemctl restart apache2
netstat -tlpn| grep apache
ss -tlpn| grep apache

คุณยังสามารถเปิดเบราว์เซอร์และนำทางไปยังที่อยู่ IP ของเซิร์ฟเวอร์หรือชื่อโดเมนบนพอร์ต 8081 หน้าเริ่มต้นของ Apache ควรแสดงในเบราว์เซอร์ อย่างไรก็ตาม หากคุณไม่สามารถเรียกดูเว็บเพจได้ ให้กลับไปที่คอนโซลเซิร์ฟเวอร์และตรวจสอบให้แน่ใจว่าได้ตั้งค่ากฎไฟร์วอลล์ที่เหมาะสมเพื่ออนุญาตการรับส่งข้อมูลพอร์ต

http://server.ip:8081 

บนการกระจาย Linux ที่ใช้ CentOS/RHEL ให้ติดตั้งแพ็คเกจ policycoreutils เพื่อเพิ่มกฎ SELinux ที่จำเป็นสำหรับ Apache เพื่อผูกกับพอร์ตใหม่ และรีสตาร์ทเซิร์ฟเวอร์ Apache HTTP เพื่อใช้การเปลี่ยนแปลง

yum install policycoreutils

เพิ่มกฎ Selinux สำหรับพอร์ต 8081

semanage port -a -t http_port_t -p tcp 8081
semanage port -m -t http_port_t -p tcp 8081

รีสตาร์ทเว็บเซิร์ฟเวอร์ Apache

systemctl restart httpd.service 

ดำเนินการ netstat หรือ คำสั่ง ss เพื่อตรวจสอบว่าพอร์ตใหม่เชื่อมโยงและรับฟังการรับส่งข้อมูลขาเข้าได้สำเร็จหรือไม่

netstat -tlpn| grep httpd
ss -tlpn| grep httpd

เปิดเบราว์เซอร์และนำทางไปยังที่อยู่ IP ของเซิร์ฟเวอร์หรือชื่อโดเมนบนพอร์ต 8081 เพื่อตรวจสอบว่าเว็บพอร์ตใหม่สามารถเข้าถึงได้ในเครือข่ายของคุณหรือไม่ หน้าเริ่มต้นของ Apache ควรแสดงในเบราว์เซอร์

http://server.ip:8081 

หากคุณไม่สามารถนำทางไปยังที่อยู่ข้างต้น ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มกฎไฟร์วอลล์ที่เหมาะสมในตารางไฟร์วอลล์เซิร์ฟเวอร์ของคุณ