Apache Web Server가 두 개의 다른 포트에서 청취하도록하려면 어떻게합니까?


45

포트 80과 포트 8080을 수신하기 위해 집에 설치 한 Apache 웹 서버를 원합니다.

Listen 8080httpd.conf에 추가 하고 Apache 서비스를 다시 시작했지만 서버가 8080에서 수신 대기하지 않는 것 같습니다. http : // localhost : 8080 에서 펀칭 시간이 초과되어 index.html을 표시하지 않지만 http : / / localhost에 내 index.html이 표시됩니다.

80과 8080을 들으려면 어떻게해야합니까?


포트 8080에서 수신 대기하지 않는 이유는 무엇입니까? 구성 스 니펫을 게시하는 것이 유용 할 수도 있습니다.
David Z

1
http.conf를 편집 한 후 Apache를 다시 시작 했습니까?
Dana the Sane 2016 년

@David 8080에서 듣지 않는 이유를 보여주기 위해 질문을 업데이트했습니다. 지금 httpd.conf에 액세스 할 수 없습니다. @Dana-그렇습니다.
Owen

답변:


63

Apache의 표준 데비안 설치에는 다음과 같은 구성 조각이 있습니다.

들어 봐 80

<IfModule mod_ssl.c>
    # SSL 이름 기반 가상 호스트는 아직 지원되지 않으므로 아니오
    # NameVirtualHost 문은 여기에서
    들어요 443
</ IfModule>

이것은 mod_ssl이 구성된 경우 아파치에게 포트 80에서 청취하고 포트 443을 청취하도록 지시합니다. 귀하의 경우에는 다음을 원합니다.

Listen 80
Listen 8080

새로운 Listen 지시문에주의를 기울이기 위해서는 아파치에서 재로드 작업이 아닌 재시작을 실행해야합니다. 가장 안전한 방법은 아파치를 멈추고 죽었는지 확인한 후 다시 시작하는 것입니다.

이 구성이 작동하지 않으면 로그 파일에서 오류 메시지를 확인하십시오. "netstat -lep --tcp"를 사용하여 포트 8080에서 수신 대기중인 것이 있는지 확인할 수 있습니다. 마지막으로 모든 것이 작동하지 않으면 strace에서 아파치를 실행하여 해당 포트에 바인드하려고하는지 확인하십시오. 문제를 로깅하지 않습니다.


1
Apache 2.4에서이 구성 조각을 어디에서 찾을 수 있습니까? 감사.
Luís de Sousa

2
내 자신의 질문에 대답 : /etc/apache2/ports.conf.
Luís de Sousa

7

이 답변은 훌륭하지만, Owen 실제로이 작업을 이미 수행 했을 가능성 ( "추가 한 Listen 8080")은 그것이 정확히 어떤 소리인지 (즉, David가 제안한 것)를 의미 할 수 있습니다.

이미이 작업을 수행 한 후에도 작동하지 않는 경우 기본 도메인을 포함하여 각 하위 도메인에 대해 지시문을 올바르게 구성했는지 확인하십시오 (이름 바로 다음에 : 80을 수신하도록 수동으로 구성된 경우).

아마도 다음과 같은 지시어가있을 것입니다.

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

당신은에 그것을 변경해야 <VirtualHost *:8080>하거나 <VirtualHost *:*>.


나는 이것이 내 문제라고 생각한다. <VirtualHost * : 80> 지시어가 있다고 생각합니다. 이것을 확인해야합니다.
Owen

1
가상 호스트가없는 경우 글로벌 DocumentRoot의 컨텐츠가 제공되므로 표준 index.html, 디렉토리 색인 페이지, 404 또는 403 오류가 발생합니다. 시간이 초과되지 않습니다.
David Pashley 2016 년

2
패킷을 자동으로 삭제하는 방화벽이있는 것처럼 들립니다.
msanford

결과적으로 방화벽 문제였습니다.
Owen

5

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>

http_apap (apache)는 포트 80에서 수신하고 mod_ssl이 구성된 경우 포트 443을 수신합니다.

Listen 80
Listen 8080

2 단계

#su - service httpd restart

3 단계

$ netstat -lntp

(모든 프로세스를 식별 할 수있는 것은 아니며, 소유하지 않은 프로세스 정보는 표시되지 않습니다. 모든 프로세스를 보려면 루트 여야합니다.)

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       

0

SELinux가 사용 가능한지 확인하십시오. 기본 SELinux 구성을 사용하면 비표준 포트에서 Apache를 실행할 수 없습니다. 다음은 SELinux를 실행 중인지 여부와 기능을 원하지 않거나 사용하지 않는 경우 비활성화하는 방법을 보여주는 사이트입니다. http://www.crypt.gen.nz/selinux/disable_selinux.html


또는 최신 SELinux 시스템을 사용하는 경우 SELinux를 켜둘 수 있습니다. 포트에 semanage port -l 레이블이 어떻게 표시되어 있는지 확인하십시오. danpash.livejournal.com/9275.html 제목을 참조하십시오. "아파치 데몬이 다른 포트에서 수신 대기하고 싶지만 SELinux 가이 를 방지하고 있습니다. 어떻게해야합니까?"
rev

0

이 작업을 수행하려면 사이트에 포트 8080을 구성해야 할 수도 있습니다. Apache 가상 호스트에 대한 문서를 읽으 십시오 . 각 '사이트'는 특정 포트 (및 IP 등)의 연결을 허용하도록 설정할 수 있습니다. http.conf에 포트 80에 대해서만 구성된 가상 호스트가 있습니까?

또한, 서버가 사용하는 8080에서 수신 대기중인 것을 확인할 수 netstat -nlp및 해당 포트의 항목을 찾고.


1
아니, 이건 옳지 않아 아파치를 포트에서 청취하려면 Listen 지시문을 사용해야합니다.
David Pashley 2016 년


1
많은 사람들이 <VirtualHost * : 80>와 같은 호스트를 생성하고,이 경우 <VirtualHost * : *>로 변경하거나 포트 8080을위한 다른 호스트를 생성해야합니다. 듣기 지침도 필요합니다)
David Z

@David Pashley, 저자는 Listen 지시문이 이미 추가되었다고 말했습니다.
Dana the Sane 2016 년

0

netstat -lntp아파치가 8080에서 듣고 있는지 알 수있는 것처럼 리눅스가 루트로 실행된다고 가정 하십시오. 이것은 문제가 듣고 있지 않은 아파치인지 또는 연결 시간을 초과시키는 아파치 외부 요인 (예 : 방화벽, selinux 등)이 있는지 식별하는 데 도움이됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.