it-swarm-vi.tech

Làm cách nào để khiến Apache Web Server lắng nghe trên hai cổng khác nhau?

Tôi muốn một máy chủ web Apache tôi đã cài đặt ở nhà để nghe trên cổng 80 và cổng 8080.

Tôi đã thêm Listen 8080 đến httpd.conf và khởi động lại dịch vụ Apache nhưng máy chủ dường như không nghe trên 8080. Đột nhập http: // localhost: 808 hết thời gian và không hiển thị chỉ mục của tôi. html nhưng http: // localhost sẽ hiển thị index.html của tôi.

Làm thế nào để tôi làm cho nó nghe 80 và 8080?

45
Owen

Một bản cài đặt Debian tiêu chuẩn của Apache sẽ có đoạn cấu hình sau:

[.__.] Nghe 80 [.__.] [.__.] <IfModule mod_ssl.c> [.__.] # Các máy chủ ảo dựa trên tên SSL chưa được hỗ trợ, do đó không có [.__.] # NameVirtualhost [.__.] Nghe 443 [.__.] </ IfModule> [.__.]

Điều này đang bảo Apache nghe trên cổng 80 và lắng nghe cổng 443 nếu mod_ssl được cấu hình. Trong trường hợp của bạn, bạn muốn:

Listen 80
Listen 8080

Bạn cần đảm bảo rằng bạn chạy khởi động lại, không phải là hoạt động tải lại trên Apache để nó chú ý đến các chỉ thị Nghe mới. Điều an toàn nhất để làm là ngăn chặn Apache, đảm bảo nó đã chết và bắt đầu lại.

Nếu cấu hình này không hoạt động, kiểm tra các tệp nhật ký cho bất kỳ thông báo lỗi. Bạn có thể sử dụng "netstat -lep --tcp" để xem có gì nghe trên cổng 8080. Cuối cùng, nếu mọi thứ khác không hoạt động, hãy thử chạy Apache theo strace để xem liệu nó có cố liên kết với cổng đó không và có bị lỗi không, nhưng không đăng nhập vấn đề.

64
David Pashley

Những câu trả lời này rất hay, nhưng chúng bỏ qua khả năng Owen đã thực sự đã làm điều này rồi ("Tôi đã thêm Listen 8080 ") có thể có nghĩa chính xác những gì nó nghe giống như (nghĩa là, những gì David đã đề xuất).

Nếu bạn đã thực hiện điều này và vẫn thấy nó không hoạt động, hãy đảm bảo rằng bạn đã định cấu hình chính xác các chỉ thị của mình cho từng tên miền bạn có thể có, bao gồm cả tên miền mặc định (nếu nó được định cấu hình thủ công để nghe: 80 ngay sau tên).

Bạn có thể có một chỉ thị như thế này:

<VirtualHost *:80>
 ServerName michaelsanford.com
 etc…
</VirtualHost>

Bạn cần thay đổi điều đó thành <VirtualHost *:8080> hoặc là <VirtualHost *:*>.

7
msanford

Bước 1

#vi httpd.conf
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

httpd (Apache) để nghe trên cổng 80 và nghe cổng 443 nếu mod_ssl được cấu hình.

Listen 80
Listen 8080

Bước 2

#su - service httpd restart

Bước 3

$ netstat -lntp

(Không phải tất cả các quy trình có thể được xác định, thông tin quy trình không thuộc sở hữu sẽ không được hiển thị, bạn sẽ phải root để xem tất cả.)

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:47027               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.1.1:80              0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.1.1:8080            0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      -                   
tcp        0      0 ::ffff:127.0.0.1:45100      :::*                        LISTEN      3149/Java           
tcp        0      0 :::111                      :::*                        LISTEN      -                   
tcp        0      0 :::80                       :::*                        LISTEN      -                   
tcp        0      0 :::57173                    :::*                        LISTEN      3149/Java           
tcp        0      0 :::18197                    :::*                        LISTEN      3149/Java           
tcp        0      0 :::22                       :::*                        LISTEN      -                   
tcp        0      0 ::1:631                     :::*                        LISTEN      -                   
tcp        0      0 :::40832                    :::*                        LISTEN      3149/Java           
tcp        0      0 ::ffff:127.0.0.1:6880       :::*                        LISTEN      3149/Java       
5
Rajat

Bạn có thể cần cấu hình một trang web một cổng 8080 để làm việc này. Đọc qua tài liệu cho Máy chủ ảo Apache . Mỗi 'trang web' có thể được thiết lập để chấp nhận kết nối trên các cổng cụ thể (và ip, v.v.). Bạn có Máy chủ ảo trong http.conf chỉ được định cấu hình cho cổng 80 không?

Ngoài ra, bạn có thể xác nhận rằng máy chủ đang nghe trên 8080 bằng cách sử dụng netstat -nlp và tìm kiếm một mục trên cổng đó.

0
Dana the Sane

Bạn cũng có thể muốn kiểm tra xem bạn đã bật SELinux chưa. Cấu hình SELinux mặc định có thể không cho phép bạn chạy Apache trên các cổng không chuẩn. Đây là một trang web cho bạn biết nếu bạn đang chạy SELinux và cách vô hiệu hóa nó, nếu bạn không muốn hoặc sử dụng các tính năng của nó. http://www.crypt.gen.nz/selinux/disable_selinux.html

0
Reamer77

Giả sử linux chạy netstat -lntp là root như bạn có thể thấy nếu Apache có nghe trên 8080 hay không. Điều này sẽ giúp bạn xác định xem sự cố là do Apache không lắng nghe hay nếu có các yếu tố bên ngoài (ví dụ: tường lửa, selinux, v.v.) để Apache khiến hết thời gian kết nối.

0
Jason Tan