กำหนดค่า apache เพื่อฟังบนพอร์ตอื่นที่ไม่ใช่ 80


104

ฉันใช้เซิร์ฟเวอร์ centOS ฉันต้องการที่จะกำหนดค่า Apache เพื่อฟังบนพอร์ต 8079. ฉันเพิ่มฟัง 8079 httpd.confสั่งใน
ฉันเปิดพอร์ต 8079 ใน iptables และรีสตาร์ท iptables ฉันหยุดบริการ iptables ด้วยซ้ำ

"netstat -nal | grep 8079" shows "tcp  0 0 :::8079 :::* LISTEN"

หากฉันพยายามเข้าถึงhttp://localhost:8079หรือhttp://myserver.com:8079จากเครื่องนั้นฉันสามารถเข้าถึงหน้านั้นได้ แต่จากเครื่องอื่นฉันไม่สามารถเข้าถึงไซต์บนพอร์ตอื่น ๆ นอกเหนือจาก 80 บนพอร์ต 80 มันใช้งานได้ บนพอร์ต 8079 ไม่ได้

ฉันต้องกำหนดค่าอะไรอีกบ้าง?

คำตอบ:


141

ใน/etc/apache2/ports.confเปลี่ยนพอร์ตเป็น

Listen 8079

จากนั้นไปที่ /etc/apache2/sites-enabled/000-default.conf

และเปลี่ยนบรรทัดแรกเป็น

<VirtualHost *: 8079>

ตอนนี้รีสตาร์ท

sudo service apache2 restart

Apache จะฟังบนพอร์ต 8079 และเปลี่ยนเส้นทางไปที่ / var / www / html


1
ไม่เพียงแค่ข้อความ "หน้าเว็บนี้ไม่พร้อมใช้งาน" เพียงเพื่อชี้แจงพอร์ต 80 ทำงานได้อย่างสมบูรณ์ การเปลี่ยนทั้ง VirtualHost และ Listen ไม่ได้ช่วยแก้ปัญหาให้ฉัน (AWS ubuntu) BTW เหตุผลที่ฉันต้องการฟังพอร์ตอื่นเพราะฉันได้กำหนดค่า nginx ให้ฟัง 80 ด้วย
Tomer

1
คำถามด่วน: คุณเปิดพอร์ตขาเข้าในกลุ่มความปลอดภัยตามที่คุณบอกว่าคุณใช้ AWS ubuntu หรือไม่
Shankar ARUL - jupyterdata.com

1
หากมีบรรทัดNameVirtualHost *:80ด้านบนให้Listen 80ทำการเปลี่ยนแปลงเช่นกัน ......
Haider Ali

75

เปิดไฟล์ httpd.conf ในโปรแกรมแก้ไขข้อความของคุณ ค้นหาบรรทัดนี้:

Listen 80

และเปลี่ยนมัน

Listen 8079

หลังจากเปลี่ยนแปลงให้บันทึกและรีสตาร์ท apache


3
ใช่ แต่ฉันได้กล่าวไว้ในบรรทัดแรกแล้วว่าฉันได้ลองสิ่งนี้แล้ว "ฉันเพิ่ม LISTEN 8079 directive ใน httpd.conf": ((
vivek.m

โอ้ sory ฉันไม่เห็นมัน คุณสามารถโพสต์ไฟล์ httpd.conf ได้ที่ไหน? และคุณใช้ซอฟต์แวร์ของบุคคลที่สาม Wamp, Xampp, Appserv หรือไม่?
ismailperim

คุณสามารถรับ httpd.conf ที่นี่fileuploading.net/860467ไม่มีอะไรเช่น WAMP, Xampp, Appserv สิ่งที่ฉันทำคือรวบรวม apache, tomcat และ jk connector จาก source และพยายามอย่างเต็มที่เพื่อให้มันทำงานร่วมกันได้
vivek.m

ฉันไม่พบปัญหา :( ทุกอย่างดูเหมือนปกติฉันลองเพิ่ม Listen 8076 line ในเซิร์ฟเวอร์ภายในของฉัน แต่มันใช้งานได้ตามปกติคุณสามารถลองตั้งค่า apache ใหม่ได้หรือไม่ถ้าเป็นไปได้
ismailperim

2
สิ่งหนึ่งที่ทุกคนดูเหมือนจะลืมเมื่อตอบคำถามประเภทนี้คือการพูดถึงตำแหน่งไฟล์ ไฟล์อยู่ใน /etc/apache2/ports.conf
Mateus Viccari

23

มันเป็นปัญหาของไฟร์วอลล์ มีไฟร์วอลล์ฮาร์ดแวร์ที่ปิดกั้นการเข้าถึงพอร์ตเกือบทั้งหมด (การปิดไฟร์วอลล์ซอฟต์แวร์ / SELinux bla bla ไม่มีผล)

จากนั้นฉันสแกนพอร์ตที่เปิดอยู่และใช้พอร์ตที่เปิดอยู่

หากคุณประสบปัญหาเดียวกันให้เรียกใช้คำสั่งต่อไปนี้

sudo nmap -T Aggressive -A -v 127.0.0.1 -p 1-65000

มันจะสแกนหาพอร์ตที่เปิดอยู่ทั้งหมดในระบบของคุณ พอร์ตใด ๆ ที่เปิดอยู่สามารถเข้าถึงได้จากภายนอก

อ้างอิง : http://www.go2linux.org/which_service_or_program_is_listening_on_port


netstat -anp | grep apache2 (คุณสามารถเห็นพอร์ตการฟังและ PID จากสิ่งนี้หากกำลังทำงานอยู่
Ubuntu

ผู้ให้บริการระบบคลาวด์ของฉันมีไฟร์วอลล์อยู่ด้านบนซึ่งปิดกั้นพอร์ต ตรวจสอบไฟร์วอลล์ที่วางไว้นอกเหนือจากในเซิร์ฟเวอร์เป้าหมาย
Yamada

16

หากคุณต้องการ apache Listen port อื่นที่ไม่ใช่ 80 คุณควรเพิ่มไฟล์ถัดไปภายใต้ ubuntu

"/etc/apache2/ports.conf"

รายการพอร์ต Listen

Listen 80
Listen 81
Listen 82

หลังจากที่คุณต้องไปที่ไฟล์ conf โฮสต์เสมือนของคุณแล้วกำหนดต่อไป

<VirtualHost *:80>
  #...v host 1
</VirtualHost>


<VirtualHost *:81>
  #...host 2
</VirtualHost>


<VirtualHost *:82>
  #...host 3
</VirtualHost>

7

สิ่งนี้ใช้ได้ผลกับฉันใน Centos

อันดับแรก:ในไฟล์ /etc/httpd/conf/httpd.conf

เพิ่ม

Listen 8079 

หลังจาก

Listen 80

สิ่งนี้จนกว่าเซิร์ฟเวอร์ของคุณจะฟังพอร์ต 8079

ประการที่สอง:ไปที่โฮสต์เสมือนของคุณสำหรับเช่น/etc/httpd/conf.d/vhost.conf

และเพิ่มรหัสนี้ด้านล่าง

<VirtualHost *:8079>
   DocumentRoot /var/www/html/api_folder
   ServerName example.com
   ServerAlias www.example.com
   ServerAdmin root@example.com
   ErrorLog logs/www.example.com-error_log
   CustomLog logs/www.example.com-access_log common
</VirtualHost>

ซึ่งหมายความว่าเมื่อคุณไปที่ไฟล์ www.example.com:8079เปลี่ยนเส้นทางไปที่

/ var / www / html / api_folder

แต่คุณต้องเริ่มบริการใหม่ก่อน

sudo service httpd restart


2

หากคุณใช้Apache บน Windows :

  1. ตรวจสอบชื่อบริการ Apache ด้วยWin+ R+ services.msc+Enter (หากไม่ใช่ ApacheX.Y ควรมีชื่อซอฟต์แวร์ที่คุณใช้กับ apache เช่น "wampapache64");
  2. เริ่มพรอมต์คำสั่งในฐานะผู้ดูแลระบบ (ใช้Win+ R+ cmd+ Enterไม่เพียงพอ);
  3. เปลี่ยนเป็นไดเรกทอรีของ Apache เช่น: cd c:\wamp\bin\apache\apache2.4.9\bin;
  4. ตรวจสอบว่าไฟล์กำหนดค่าใช้ได้กับ: httpd.exe -n "YourServiceName" -t(แทนที่ชื่อบริการด้วยชื่อที่คุณพบในขั้นตอนที่ 1);
  5. ตรวจสอบให้แน่ใจว่าบริการหยุด: httpd.exe -k stop -n "YourServiceName"
  6. เริ่มต้นด้วย: httpd.exe -k start -n "YourServiceName"
  7. หากเริ่มต้นได้ดีปัญหาก็จะไม่มีอีกต่อไป แต่ถ้าคุณได้รับ:

    AH00072: make_sock: ไม่สามารถผูกกับที่อยู่ IP: PORT_NUMBER

    AH00451: ไม่มีซ็อกเก็ตสำหรับฟังปิดเครื่อง

    หากหมายเลขพอร์ตไม่ใช่หมายเลขที่คุณต้องการใช้ให้เปิดไฟล์กำหนดค่า Apache (เช่นC:\wamp\bin\apache\apache2.4.9\conf\httpd.confเปิดด้วยโปรแกรมแก้ไขโค้ดหรือ wordpad แต่ไม่ใช่ notepad - จะไม่อ่านบรรทัดใหม่อย่างถูกต้อง) และแทนที่หมายเลขในบรรทัดที่เริ่มต้น ด้วยListenหมายเลขพอร์ตที่คุณต้องการบันทึกและทำซ้ำขั้นตอนที่ 6 หากเป็นพอร์ตที่คุณต้องการใช้ให้ดำเนินการต่อ:

  8. ตรวจสอบ PID ของกระบวนการที่ใช้พอร์ตนั้นด้วย Win+ R+ resmon+ Enterคลิกที่แท็บเครือข่ายจากนั้นบนแท็บย่อยพอร์ต
  9. ฆ่ามันด้วย: taskkill /pid NUMBER /f( /fบังคับมัน);
  10. ตรวจสอบอีกครั้งresmonเพื่อยืนยันว่าพอร์ตว่างในขณะนี้และทำซ้ำขั้นตอนที่ 6

เพื่อให้แน่ใจว่าบริการของ Apache เริ่มต้นอย่างถูกต้องโดยเปิดการกำหนดค่า ไฟล์ config โฮสต์เสมือนตามที่ sarul กล่าวถึง (เช่น:)C:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.confเป็นสิ่งที่จำเป็นหากคุณกำลังตั้งค่าพา ธ ไฟล์ของคุณที่นั่นและเปลี่ยนพอร์ตด้วย httpd.exe -k restart -n "YourServiceName"ถ้าคุณเปลี่ยนมันอีกครั้งอย่าลืมที่จะเริ่มบริการ:


1

สำหรับเซิร์ฟเวอร์ FC22

cd / etc / httpd / conf แก้ไข httpd.conf [Enter]

เปลี่ยน: ฟัง 80 เป็น: ฟังหมายเลขอะไรก็ได้

บันทึกไฟล์

systemctl รีสตาร์ท httpd.service [ป้อน] หากจำเป็นให้เปิดหมายเลขอะไรก็ได้ในเราเตอร์ / ไฟร์วอลล์ของคุณ


0

เรียกใช้คำสั่งนี้หาก ufw (Uncomplicatd Firewall) ของคุณถูกเปิดใช้งาน เพิ่มสำหรับพอร์ตตัวอย่าง 8080

$ sudo ufw allow 8080/tcp

และคุณสามารถตรวจสอบสถานะได้โดยการเรียกใช้

$ sudo ufw status

สำหรับข้อมูลเพิ่มเติมตรวจสอบ: https://linuxhint.com/ubuntu_allow_port_firewall

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.