# 웹서버 설정파일 에러
리디렉션한 횟수가 너무 많습니다. httpd.conf, .htaccess, nginx.conf, 웹서버 설정파일 에러 발생.
# 리디렉션 설정이 잘못되어, 클라이언트가 동일한 URL로 계속 리디렉션되는 루프가 발생한 것임.
- HTTP에서 HTTPS로, 또는 그 반대 방향으로의 리디렉션이 잘못 설정된 경우
(Apache)
RewriteEngine On
# example.com에서 www.example.com으로 리디렉션
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
# www.example.com에서는 리디렉션하지 않음 (조건 추가)
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
(Nginx)
server {
listen 80;
server_name example.com;
# example.com에서 www.example.com으로 리디렉션
return 301 http://www.example.com$request_uri;
}
server {
listen 80;
server_name www.example.com;
# www.example.com에서는 리디렉션하지 않음
location / {
# 리디렉션 없이 그대로 처리
try_files $uri $uri/ =404;
}
}
- A URL에서 B URL로 리디렉션을 설정했는데, B URL에서 다시 A URL로 리디렉션하는 규칙이 있을 경우
- www 접두어와 non-www 버전 간의 상호 리디렉션 설정이 잘못될 경우
(Apache)
<VirtualHost *:80>
ServerName example.com
Redirect permanent / http://www.example.com/
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/html
# 여기에 추가적인 설정
</VirtualHost>
(Nginx)
server {
listen 80;
server_name example.com;
return 301 http://www.example.com$request_uri;
}
server {
listen 80;
server_name www.example.com;
root /var/www/html;
# 여기에 추가적인 설정
}
server {
listen 80;
server_name www.example.com;
return 301 http://example.com$request_uri;
}
server {
listen 80;
server_name example.com;
root /var/www/html;
# 여기에 추가적인 설정
}
- 프록시 설정에서 리디렉션 관련 헤더(X-Forwarded-Proto 등)가 제대로 처리되지 않은 경우
(Apache)
<VirtualHost *:80>
ServerName example.com
# 프록시 패스 설정
ProxyPreserveHost On
ProxyPass / http://backend_server/
ProxyPassReverse / http://backend_server/
# 리디렉션 처리용 헤더 설정
RequestHeader set X-Forwarded-Proto "http"
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.pem
# 프록시 패스 설정
ProxyPreserveHost On
ProxyPass / http://backend_server/
ProxyPassReverse / http://backend_server/
# 리디렉션 처리용 헤더 설정
RequestHeader set X-Forwarded-Proto "https"
</VirtualHost>
(Nginx)
server {
listen 80;
server_name example.com;
location / {
# 리디렉션 처리용 헤더 설정
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://backend_server;
}
}
- 브라우저 또는 프록시 서버의 캐시가 잘못된 리디렉션 정보를 유지하고 있는 경우. (캐시 비활성화)
(Apache)
<Directory "/your/directory">
Header set Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0"
Header set Pragma "no-cache"
Header unset ETag
FileETag None
</Directory>
(Nginx)
proxy_cache_bypass $http_cache_control;
proxy_no_cache $http_pragma;
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires "0";
- 브라우저에서 직접 캐시를 삭제할 수도 있음.
댓글목록
등록된 댓글이 없습니다.