"특정 URL에 대해 Redirect 예외 처리 하기"
http://localhost 로 접근을 하면 https://localhost 로 redirect를 할 수 있다.
2020/10/12 - [운영체제/Linux] - [Linux] Apache http(80) -> https(433) redirect 설정
환경
- OS :Centos 7.8
- apache 2.4.46
(아래 설정은 환경에 따라 차이가 있을 수 있습니다.)
Redirect시 특정 URL에 대해서는 Redirect가 되지 않고 해당 URL로 접근하고자 할 때 아래와 같이 설정하면 된다.
redirect를 설정해 놓은 config 파일에서 설정한다. (httpd.conf 또는 extra/httpd-vhost.conf)
예를 들어 http://localhost/test/index.html 라는 URL에 대해서 test 경로가 포함되면 모두 예외처리 하는 설정이다.
# vi /usr/local/apache2-ssl/conf/extra/httpd-vhosts.conf
.....
<VirtualHost *:80>
~(생략)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/test/.*$ #### Redirect예외 URL
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
~(생략)
</VirtualHost>
RewriteCond %{REQUEST_URI} !^/test/.*$
=> URL주소안에 test 디렉토리가 포함되면 redirect를 하지 않는다 test하위에 있는 어떤 파일을 읽어 드린다고 해도 redirect가 되지 않는다.
상기와 특정 경로가 포함되어 있을 경우에 대한 예외처리이고 "test" 라는 문구 대신 예외처리하고자 하는 경로로 설정하면 된다.
만약 경로가 아닌 파일로 한다고 하면 아래와 같이 설정하면 된다.
=> RewriteCond %{REQUEST_URI} !^/index.html
여러 파일일 경우엔
=> RewriteCond %{REQUEST_URI} !^/(file1|file2|file3|.....)
===>> EX) RewriteCond %{REQUEST_URI} !^/(index.html|index2.html|main_test.html)
버티컬바(?) (|)로 구분지어 OR처럼 여러 파일을 설정할 수 있다.
잠깐만요...
단순히 apache로만 되어 있다면 상관이 없겠지만 tomcat이 연동 되어 jkmount가 되어 있는 상황에서 mod_jk(jkmount)를 사용중인 상태에서 단순히 웹서버내 Document 하위 경로에 있거나 특정 경로에 있는 상태에서 mod_jk를 사용하지 않고자 할 경우 아래과 추가로 설정을 해줘야 한다.
+ usage) JkUnmount PATTERN TOMCAT_CONNECT_WORKER_NAME
JkUnMount : 해당 URL패턴을 톰캣서버에서 호출하지 못하도록 설정
<VirtualHost *:80>
ServerAdmin admin@localhost
ServerName localhost
DocumentRoot "/"
ErrorLog "|/usr/local/sbin/cronolog /log/%Y/error_log-%Y-%m-%d --symlink=/usr/local/apache2-ssl/logs/error_log"
CustomLog "|/usr/local/sbin/cronolog /log/%Y/access_log-%Y-%m-%d --symlink=/usr/local/apache2-ssl/logs/access_log" combined
CustomLog "|/bin/logger -p local1.notice -t apache" combined
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/test/.*$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
#### 예외설정 파일이 하나 또는 많을 경우
#### 아스테리크(*)를 사용할 수도 있다.
JkUnMount /index.html tomcat_connector_worker_name
JkUnMount /main_test.html tomcat_connector_worker_name
JkUnMount /index2.html tomcat_connector_worker_name
### 또는 Directory일 경우
JkUnMount /DIR_NAME/* tomcat_connector_worker_name
JkMount /* tomcat_connector_worker_name
#### tomcat_connector_worker_name는 설치한위치에따라 다르겠지만
#### APACHE_PATH/conf/httpd.conf에 jk_module에 설정해 놓은
#### jkWorkesFile경로의 workers.properties파일내의 worker list를 입력한다.
</VirtualHost>
'운영체제 > Linux' 카테고리의 다른 글
[Linux] Centos7에 Google OTP 설치 (2 Factor인증) (0) | 2020.11.11 |
---|---|
[Linux] dell omsa command (옴사 명령어) - omreport (0) | 2020.11.05 |
[Linux] Apache http(80) -> https(433) redirect 설정 (0) | 2020.10.12 |
[Linux] 개행문자 입력하기 및 개행문자 삭제 (0) | 2020.10.05 |
[Linux] SMB(SAMBA)를 이용한 AD Join ( AD LDAP)설정 (0) | 2020.08.04 |