개발도구/WAS

apache redirect하는 방법

노루아부지 2019. 12. 12. 15:54

[참고]

192.168.0.158:8081은 target URL입니다.

 

 

1. Redirect 명령어를 사용하는 방법

Redirect / http://192.168.0.158:8081

 

2. Rewrite를 사용하는 방법

RewriteEngine On 
RewriteRule ^/$ http://192.168.0.158:8081/ [R]

 

[참고] Flag

RewriteRule 문법중 마지막은 패턴이 일치할 경우 어떤 동작을 취할지 지정하는 부분이며 이를 플래그라고 합니다. 지정할 수 있는 플래그중 자주 사용되는 것들은 다음과 같은 항목이 있습니다. 플래그는 전체 단어를 써도 되지만 축약어로 써도 됩니다. 전체 단어를 사용할 때는 공백을 제거하고 사용해야 합니다.

 

  • Env:E - Env 플래그는 조건이 맞을 경우 특정 환경 변수를 설정하거나 해제할 수 있다. 
    다음은 클라이언트가 요청한 파일이 이미지 파일일 경우 로그를 남기지 않게 하는 설정으로 전 절의 mod_setenvif 로 사용한 예와 동일한 결과를 갖게 된다. 
    RewriteEngine On 
    RewriteRule \.(jpe?g|gif|png)$ - [env=dontlog:1] 
    CustomLog logs/access_log combined env=!dontlog 
  • Last:|L – Last 플래그는 더이상 mod_rewrite 룰 처리를 하지 않겠다는 의미이다. 프로그래밍 언어에서 break 와 비슷한 용도로 사용되며 여러 개의 RewriteRule  룰을 연결해서 사용하는 경우 더 이상의 처리를 하지 않아도 될 때 유용하게 사용할 수 있다.  
    Nocase:NC – Nocase 는 패턴 매칭할 경우 대소문자 구분을 하지 않겠다는 의미이다. 다음과 같이 설정하면 브라우저가 /article/3 으로 요청한 것을 index.php에 articleID=$1 형식으로 전달한다. $1 은 첫 번째 일치하는 변수이므로 3 이 설정된다. 그러므로 example.com/article/3 과 example.com/index.php?articleID=3 과 동일해 진다. NC 이므로 대소문자를 구분하지 않으므로 example.com/ARticle/3 도 같은 의미가 된다. 
    RewriteRule ^/article/(\d*) /index.php?articleID=$1 [NC] 
  • Forbidden:F – Forbidden 플래그는 규칙에 일치할 경우 해당 리소스에 대해 HTTP 403 Forbidden 응답을 클라이언트에게 전송한다.  
    외부에서 접근하면 안 되는 리소스가 있을 경우 사용하면 유용하다. Forbidden 은 Last 의 의미를 포함하므로 더 이상의 Rewrite 규칙을 처리하지 않고 바로 리턴한다. 
    다음 예제는 브라우저가 요청한 리소스의 확장자가 exe 또는 msi와 같은 실행 파일일 경우 403 응답을 전송하는 예제이다. 
    RewriteEngine On 
    RewriteRule \.(exe|msi) - [F]  
  • Redirect:R – 리다이렉트 플래그는 규칙에 일치할 경우 HTTP 302 Redirect 응답을 클라이언트에게 전송한다. 만약 HTTP 301 Moved Permanently 응답을 전송해야 한다면 R=301 로 적어주면 된다. 
    다음은 images 경로 밑에 모든 gif 요청을 jpg URL로 전환하는 예제이다. 

    RewriteRule ^/images/(.*)\.gif /jpegs/$1.jpg [L,R=301] 
    Passthru:PT – RewriteRule 의 target_url 이 http 나 https 로 시작하지 않으면 mod_rewrite 는 target_url 을 로컬 파일의 경로로 인식한다. / 로 시작할 경우 절대 경로로 / 가 아닐 경우 상대 경로로 처리하게 된다. 파일 경로로 처리할 경우 스크립트 파일의 경우 파일의 내용이 그대로 노출될 우려가 있다. 
    파일 경로로 처리할 경우 아파치 설정에 따른 적절한 핸들러가 실행되지 않고 해당 파일을 읽어서 브라우저에 전송하게 된다. 

    이로 인해 , ,  등의 지시자로 설정한 내용이 적용되지 않거나 스크립트 타입에 따른 스크립트 핸들러가 실행되지 않게 된다. 

    이로 인해 404 에러가 발생하거나 스크립트의 내용이 브라우저에 그대로 노출될 수 있다.
  • P - 주어진 URL에 대한 요청은 Apache 모듈 mod_proxy에 의해 수행된다. ( 이 경우 URL keeping이 가능합니다. )

 

3. Proxy를 사용하는 방법

 

1) httpd.conf에서 아래 내용 주석 해제

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule proxy_http_module modules/mod_proxy_http.so

 

2) DOCUMENT_ROOT에 .htaccess 파일을 생성하고 아래 내용 추가

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteRule ^ http://192.168.0.158:8081%{REQUEST_URI} [P]

 

 

 

 

 

 

 

 

[참고사이트]

https://stackoverflow.com/questions/23931987/apache-proxy-no-protocol-handler-was-valid

 

Apache Proxy: No protocol handler was valid

I am trying to proxy a subdirectory to another server. My httpd.conf: RewriteEngine On ProxyPreserveHost On RewriteRule .*subdir/ https://anotherserver/subdir/ [P] The problem is that Apache is a...

stackoverflow.com

https://stackoverflow.com/questions/16009901/redirect-to-other-domain-but-keep-typed-domain

 

Redirect to other domain but keep typed domain

After looking on the internet for about an hour, I didn't find the answer to my question. So I'm searching with the wrong keywords or what I want is not possible. What I want: I have multiple doma...

stackoverflow.com

 

728x90
loading