Apache proxy ไม่ทำงานสำหรับพอร์ต localhost


16

ฉันมี Apache 2.2.15 ที่ทำงานบนพอร์ต 80 และต้องการพร็อกซีเครื่องยนต์ servlet บน localhost พอร์ต 8983 ฉันมีการตั้งค่าที่ทำงานบนเซิร์ฟเวอร์อื่น แต่ได้ย้ายไปยังเครื่อง CentOS 6 มันไม่ทำงานกับเครื่องใหม่ การกำหนดค่าโฮสต์เสมือนของฉัน:

ProxyRequests Off

<พร็อกซี *>
   คำสั่งปฏิเสธอนุญาต
   อนุญาตจากทั้งหมด
</ พร็อกซี>

ProxyPass / http: // localhost: 8983 /
ProxyPassReverse / http: // localhost: 8983 /

ฉันสามารถเข้าถึงพอร์ต 8983 ถ้าฉันใช้เบราว์เซอร์และไปที่มันโดยตรง (และไม่ผ่านพร็อกซี Apache) แต่ไม่สามารถเชื่อมต่อได้หากฉันไปที่ / ผ่านเซิร์ฟเวอร์ Apache

ฉันสามารถเปลี่ยนสิ่งที่เป็นพร็อกซีไปเป็นhttp://slashdot.orgและ Slashdot ได้รับพร็อกซีสำเร็จแล้ว (ดังนั้นฉันรู้ว่ามันสามารถพร็อกซีโดยทั่วไป)

ฉันเปิดการดีบักใน Apache และนี่คือธุรกรรม:

[อา. 22 เม.ย. , 16:47:04 น. 2012] [ดีบั๊ก] mod_proxy_http.c (56): พรอกซี: HTTP: URL ของ canonicalising // localhost: 8983 /
[อา. 22 เม.ย. , 16:47:04 น. 2012] [debug] proxy_util.c (1506): [client 184.39.79.7] proxy: http: พบผู้ปฏิบัติงาน http: // localhost: 8983 / สำหรับ http: // localhost: 8983 /
[อา. 22 เม.ย. , 16:47:04 น. 2012] [ดีบั๊ก] mod_proxy.c (998): รูปแบบการทำงาน http handler (พยายาม 0)
[อา. 22 เม.ย. , 16:47:04 น. 2012] [ดีบั๊ก] mod_proxy_http.c (1962): พรอกซี: HTTP: URL ที่ให้บริการ http: // localhost: 8983 /
[อา. 22 เม.ย. , 16:47:04 น. 2012] [debug] proxy_util.c (2011): proxy: HTTP: ได้รับการเชื่อมต่อสำหรับ (localhost)
[อา. 22 เม.ย. , 16:47:04 น. 2012] [debug] proxy_util.c (2067): proxy: การเชื่อมต่อ http: // localhost: 8983 / to localhost: 8983
[อา. 22 เม.ย. , 16:47:04 น. 2012] [debug] proxy_util.c (2193): proxy: เชื่อมต่อ / กับ localhost: 8983
[อา. 22 เม.ย. , 16:47:04 น. 2012] [debug] proxy_util.c (2444): proxy: HTTP: fam 10 socket ที่สร้างขึ้นเพื่อเชื่อมต่อกับ localhost
[อา. 22 เม.ย. , 16:47:04 น. 2012] [ดีบั๊ก] proxy_util.c (2455): (13) ปฏิเสธการอนุญาต: พรอกซี: HTTP: พยายามเชื่อมต่อกับ [:: 1]: 8983 (localhost) ล้มเหลว
[อา. 22 เม.ย. , 16:47:04 น. 2012] [debug] proxy_util.c (2444): proxy: HTTP: fam 2 socket ที่สร้างขึ้นเพื่อเชื่อมต่อกับ localhost
[อา. 22 เม.ย. , 16:47:04 น. 2012] [ข้อผิดพลาด] (13) การอนุญาตที่ถูกปฏิเสธ: พร็อกซี: HTTP: ความพยายามเชื่อมต่อกับ 127.0.0.1:8983 (localhost) ล้มเหลว
[อาทิตย์ 22 เมษายน 16:47:04 2012] [ข้อผิดพลาด] ap_proxy_connect_backend ปิดการใช้งานคนงานสำหรับ (localhost)
[อา. 22 เม.ย. , 16:47:04 น. 2012] [debug] proxy_util.c (2029): proxy: HTTP: เปิดตัวการเชื่อมต่อสำหรับ (localhost)
[อา. 22 เม.ย. , 16:47:04 น. 2012] [ดีบั๊ก] mod_proxy_http.c (56): พรอกซี: HTTP: URL ของ canonicalising //localhost:8983/favicon.ico
[อา. 22 เม.ย. , 16:47:04 น. 2012] [debug] proxy_util.c (1506): [client 184.39.79.7] proxy: http: พบผู้ปฏิบัติงาน http: // localhost: 8983 / สำหรับ http: // localhost: 8983 / favicon.ico
[อา. 22 เม.ย. , 16:47:04 น. 2012] [ดีบั๊ก] mod_proxy.c (998): รูปแบบการทำงาน http handler (พยายาม 0)
[อา. 22 เม.ย. , 16:47:04 น. 2012] [ดีบั๊ก] mod_proxy_http.c (1962): พรอกซี: HTTP: URL ที่ให้บริการ http: // localhost: 8983 / favicon.ico
[อา. 22 เม.ย. , 16:47:04 น. 2012] [ดีบั๊ก] proxy_util.c (1949): พรอกซี: HTTP: ลองคนงานเพื่อ (localhost)
[อาทิตย์ 22 เมษายน 16:47:04 2012] [ข้อผิดพลาด] พร็อกซี: HTTP: ปิดใช้งานการเชื่อมต่อสำหรับ (localhost)

ฉันไม่รู้ว่าซ็อกเก็ต fam 10 หรือ fam 2 คืออะไร ใครมีความคิดเห็นเกี่ยวกับสาเหตุที่ไม่พร็อกซีพอร์ตอื่นของฉัน

ขอบคุณ!


Apache proxy จะอนุญาตการรับส่งข้อมูล HTTP หรือ HTTPS เท่านั้น
ionFish

คำตอบ:


7

นี่คือทางออกสำหรับปัญหาของคุณ:

ในการเปิดบูลีนนี้คุณต้องใช้สายนี้ (การอนุญาตรูท)

setsebool -P httpd_can_network_connect on

หรือ

sudo setsebool -P httpd_can_network_connect on

หวังว่าจะช่วย การอ้างอิงดูที่นี่: https://wiki.centos.org/TipsAndTricks/SelinuxBooleans


11

ฉันแก้ไขปัญหาของฉัน:

ถ้าฉันทำ: sestatus -b | grep httpd

ฉันเห็นhttpd_can_network_connectคือoff

การแก้ปัญหาคือการพิมพ์: togglesebool httpd_can_network_connect


4
ไม่แน่ใจว่าtoggleseboolมาจากที่ใด (ไม่ใช่ CentOS7 ของฉันขั้นต่ำ) และเว็บแนะนำว่าแม้ว่าคุณtogglesebool จะเปลี่ยนค่า "ในหน่วยความจำ"เท่านั้น แต่ใช้setsebool -P httpd_can_network_connect=1งานได้สำหรับฉัน - P เพื่อให้สามารถอยู่รอดได้รีบูตขอบคุณ คำใบ้!
jwd630

1

ตรวจสอบให้แน่ใจว่าพอร์ต 8080 กำลังฟังโดยเรียกใช้คำสั่งต่อไปนี้

netstat -tlpn

ถ้าไม่ใช่ให้รีสตาร์ทเซิร์ฟเวอร์เจนกินส์

sudo /etc/init.d/jenkins start

มันควรจะทำงานตอนนี้ หวังว่ามันจะช่วย

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