ProxyPass : 디렉토리 URL을 비표준 포트로 리디렉션


13

Google을 검색했지만 답변을 찾는 데 큰 성공을 거두지 못했습니다. 우분투에서 서버를 실행 중이며 다양한 비표준 포트를 사용하는 프로그램이 설치되어 있습니다. 각각은 다른 포트를 사용합니다. 제 경우에는 9090, 9091, 9092, 9093 및 9094입니다. 아파치 서버를 설정하고 IP 주소를 입력하지 않고 서버에 도달 할 수있는 도메인 이름이 있습니다. 내가 찾고있는 것은 내가 나열된 다른 포트를 가리킬 수있는 디렉토리를 만드는 방법입니다. 나는 다음과 같은 것을 원한다 :

https://www.mydomain.com/app1
https://www.mydomain.com/app2
http://www.mydomain.com/app3

일부 포트는 SSL을 사용하고 일부는 그렇지 않습니다. 사용하기 쉽도록 순서 (9090-9094)로 설정했습니다. / app1이 SSL 포트 9090을 가리키고 / app2가 SSL 포트 9091을 가리키고 / app3이 SSL이 아닌 포트 9092를 가리 키도록하고 싶습니다. 간단한 방법이 있습니까? 다른 게시물을 기반으로 ProxyPass 등을 추가하려고했지만 아무것도 작동하지 않았습니다. 새 사이트를 추가해야합니까?

또한 파일 편집과 관련이 있다면 파일의 기본 위치와 항목을 추가 할 위치를 나열 할 수 있다면 크게 감사하겠습니다. ProxyPass를 추가하라는 게시물을 계속 보았으므로 VirtualHost 내부에 있다고 가정했지만 완전히 확신하지 못했습니다. 기본적으로 나는 웹 서버 설정에 대해 거의 알지 못하며 그렇게 취급해야합니다.

잘못된 태그에 대해 사과 드리며 게시물을 읽는 데 걸린 시간과 제공 할 수있는 도움에 감사드립니다.

편집 : 명확히하기 위해 응용 프로그램은 이미 https://www.mydomain.com:9090등을 통해 액세스 할 수 있습니다 https://www.mydomain.com/appName. 해당 응용 프로그램에서 게시 한 동일한 위치 / 페이지에 도달하는 데 사용하는 방법을 원합니다 .

편집 2 : / etc / apache2 / sites-available / default에서

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass /app1 https://localhost:9090/
    ProxyPassReverse /app1 https://localhost:9090/
</VirtualHost>

이를 설정하는 데 사용한 구성 지시문의 출력을 게시 할 수 있습니까? 이들이 호스트 내부에있는 경우 전체 호스트를 게시 할 수 있습니까?
Marcos Velazquez

무엇을 설정 하시겠습니까? 포트? 포트는 모두 해당 프로그램의 UI를 통해 설정되며 서버의 각 응용 프로그램에 액세스 할 때 포트를 입력하지 않아도되는 방법을 찾고 있습니다. 응용 프로그램을 검색하여 찾을 수있는 것을 볼 수 있지만 포트는 일반적으로 config.ini 파일에 저장됩니다
Serneum

아니에요 나는 당신이 ProxyPass를 사용하고 있다면 다른 것들을 가상 호스트 안에 두어야 만한다는 것을 의미했다. 그렇다면 가능한 경우 전체 호스트 콘텐츠를 게시 할 수 있습니까? 즉, <VirtualHost 10.0.0.1:80 > ServerName server.domain.com DocumentRoot /usr/local/apache/htdocs </VirtualHost>
마르코스 벨라 스케

도움을 요청하기 전에 깨끗한 슬레이트를 얻기 위해 대부분의 변경 사항을 취소했습니다. 방금 가지고있는 / etc / apache2 / sites-available / default 파일을 추가했고, 다른 여러 사이트 / 검색에서 본 내용에 따라 프록시 항목을 추가했습니다
Serneum

답변:


13

다음 아파치 모듈이 설치되고로드되었는지 확인하십시오.

mod_proxy
mod_proxy_http
mod_ssl

루트로 다음 명령을 실행하여 확인할 수 있습니다 (httpd가 $ PATH에 있다고 가정).

httpd -t -D DUMP_MODULES

그런 다음 구성을 다음과 같이 변경하십시오.

ProxyRequests Off
<Proxy *>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Proxy>
SSLProxyEngine on
ProxyPass /app1 https://localhost:9090
ProxyPassReverse /app1 https://localhost:9090

mydomain.com이 localhost를 가리 키 http://localhost/app1거나 방문 http://mydomain.com/app1한다고 가정 하면 프록시가 작동합니다 .


이전과 같은 문제로 mod_proxy를 설치하는 방법을 모릅니다 .a2enmod mod_proxy는 mod_proxy가 존재하지 않는다고 말합니다. 작업을 수행 할 수 있도록이 3 가지 모드를 얻는 방법을 계속 찾아 보겠습니다. 즉, 현재 proxy, proxy_http 및 ssl이 실행 중입니다. 이것이 필요한 것이라면이 솔루션은 여전히 ​​작동하지 않는 것 같습니다. "127.0.0.1에서 허용"과 관련이 있다고 생각되는 금지 된 메시지가 표시되지만 확실하지 않습니다.
Serneum

참고로, mydomain.com은 로컬 호스트가 아닌 외부 IP를 가리 킵니다. localhost : 9090을 내 ip : 9090으로 변경하려고 시도했지만 성공하지 못했습니다. ProxyPass 옆에 있는 "허용"및 " localhost "가 서버 또는 서버에 대한 액세스와 관련되어 있습니까?
Serneum

일시적으로 모두 허용을 수행하여 작동합니다. 단점은 페이지에 CSS 등이 나타나지 않는다는 것입니다. 그러나 그것은 내 스스로 볼 수있는 완전히 별개의 문제입니다. 감사.
Serneum

어떤 구성 파일에 추가해야 ProxyRequests Off <Proxy *> Order deny,allow Deny from all Allow from 127.0.0.1 </Proxy> SSLProxyEngine on ProxyPass /app1 https://localhost:9090 ProxyPassReverse /app1 https://localhost:9090합니까?
kiltek

표시되지 않은 페이지 자산은 별도의 문제가 아닐 수 있습니다. 여기서 ProxyPass 지시문은 문서 (app1)에만 적용됩니다. 모든 내용이있는 app1 디렉토리를 프록시하려면 슬래시를 추가하십시오. ProxyPass /app1/ https://localhost:9090/ProxyPassReverse에 대해서도 동일합니다. 두 번째로 RewriteRule redirect를 추가하십시오 : RewriteRule ^/app1$ /app1/ [R]/ app1은 프록시되지 않습니다.
papo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.