티스토리 뷰

DEV/nginx

[nginx] 도메인 변경시 처리

뚜비두빱 2022. 1. 16. 18:38

만약 도메인이 www.domain1.com 에서 www.domain2.com로 변경 되었고,

www.domain1.com, www.domain2.com 도메인을 모두 소유하고 있을 경우

domain1을 domain2로의 리다이렉트를 nginx에서 처리하는 방법 입니다.

 

 

nginx에서 주소를 바꿔주도록 설정 해주면 된다.

server {
	listen 443;
	server_name 도메인1;
	return 301 도메인2$request_uri;
}

위와 같이 301코드와 함께 도메인2로 리턴을 하면 파라미터까지 추가해서 보낼 수 있다.

ex) www.naver.com/hihi→ www.daum.net/hihi

그러나 도메인1로 post요청을 보내면 308 permanent redirect 이라는 메시지와 함께 요청이 제대로 전달 되지 않는다.

확실히 어떤 이유 때문에 오류가 나는지는 모르겠지만 도메인2로 리다이렉트 될 때 리다이렉트가 될뿐

post요청을 보내지 않아서 그런거라 생각 된다.

301 Moved Permanently - HTTP | MDN

server {
    listen      443;
    server_name 도메인1;
    if ($request_method != POST) {
        return 301 도메인2$request_uri; 
    }
    location ~* ^{
            proxy_connect_timeout 600;
            proxy_send_timeout 600;
            proxy_read_timeout 600;
            send_timeout 600;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
            # proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_set_header Content-Type $content_type;
            proxy_pass 도메인2; 
        }    
}

request_method 가 POST 가 아닌 다른 요청일 경우 도메인2로 redirect 시켜주고, POST 요청의 경우 proxy_pass 를 이용하여 redirect 시켜 주었다. proxy_pass 를 이용할 경우 도메인이 바뀌지 않기 때문에 POST method일때만 proxy_pass를 넣어 주었다.

proxy_set_header Host $http_host; 

→ 이 옵션의 경우 넣으면 400 Request Header Or Cookie Too Large 오류와 함께 nginx로그에는 수많은 반복 로그들이 찍혔다. 이유는 모르겠다. (stackoverflow 보고 해결)

400 Bad Request - request header or cookie too large

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함