어떻게 Nginx에서 URL을 리디렉션합니까

어떻게 Nginx에서 URL을 리디렉션합니까

2022-06-03 last update

7 minutes reading Nginx
Nginx는 경량급 웹 서버로 보통 역방향 에이전트, 웹 서버, 부하 평형기로 사용된다.기본적으로 Nginx는 많은 유용한 기능을 제공하고 설치할 때 더 많은 모듈을 추가할 수 있습니다.이 안내서는 URL을 다른 방향으로 바꾸는 방법을 보여 줍니다.비록 Nginx는 대량의 URL 리디렉션 기능을 제공하지만, 이 안내서는 URL 리디렉션의 기본 기능만 가르치기 위해 그 중의 일부분을 사용했다.이 안내서에는 보안되지 않음(포트 80) URL을 보안 버전으로 다시 지정하고 IP 요청을 도메인 이름으로 다시 지정하며 마지막으로 다른 하위 도메인, 도메인을 주 도메인으로 다시 지정하는 내용이 포함되어 있습니다.

선결 조건


우선, 이 안내서는 사용자가 컴퓨터에 정확한 SSH 클라이언트를 설치했다고 가정하고 없으면 Putty를 클라이언트로 계속 설치한 다음 다음 명령을 사용합니다.또한 Nginx를 사용하려면 Nano 편집기가 필요합니다.
  • 다음 명령을 입력하여 Nano 텍스트 편집기를 설치합니다.첫 번째 명령은 저장소에서 최신 패키지를 검색하고, 두 번째 명령은 최신 버전의nano 텍스트 편집기를 설치합니다.
  • sudo apt-get update
    sudo apt-get install nano
  • 터미널 창에서 다음 명령을 입력하여 현재 디렉터리를nginx 디렉터리로 변경합니다.
  • cd /etc/nginx/sites-available
  • 현재 nano default 또는 도메인과 관련된 파일 이름을 입력하여 도메인 설정을 변경합니다.
  • 지금부터 다음 중 하나에 따라 조작하십시오.
  • HTTP에서 방향 변경(포트 80)


    오늘날 구글은 많은 다른 검색엔진과 암호화로 연결된 사이트를 즐겨 사용해야 한다.클라이언트와 서버 간의 연결이 암호화되면 이 특정 연결을 통해 전송된 데이터는 안전하기 때문에 제3자는 이 데이터에 접근할 수 없습니다.연결이 암호화되지 않으면 이런 사이트는 안전하지 않기 때문에 데이터의 안전을 위태롭게 할 수 있다.안전하지 않은 사이트는 포트 80을 사용하여 대중에게 서비스를 제공한다.불행하게도, 기본적으로 웹 브라우저는 포트 80과 연결됩니다. 웹 서버는 기본적으로 클라이언트가 필요로 하는 것으로 가정하기 때문에 보안 버전으로 다시 지정해야 합니다.Nginx를 사용하려면 여러 가지 방법이 있습니다.

    방법 1


    현재 도메인 이름을 사용할 수 있고 클라이언트로부터 요청을 받으면 다음 코드 세그먼트를 사용하여 다른 도메인으로 변경할 수 있습니다.기본 파일이나 도메인의 파일로 복사하기만 하면 됩니다.
    기본 서버 파라미터는 이 서버 블록을 기본 서버로 지정하기 때문에 포트 80에 대한 모든 요청은 이 서버 블록을 기본적으로 실행하고rest를 실행합니다.괄호는 ipv6 네트워크에서 요청을 캡처하는 것을 나타냅니다.Return 310은 리디렉션 방향이 영구적이므로 링크 흐름이 전달됩니다.
    server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name domain.com www.domain.com;
    return 301 https://domain.com$request_uri;
    }

    방법 2


    현재 서버에 추가된 사이트가 없고 포트 80으로 리디렉션을 요청하면 다음 서버 블록을 사용할 수 있습니다.앞에서 설명한 대로 기본 파일로 복사합니다.여기(밑줄)는 도메인을 나타냅니다.앞의 default\u 서버 매개 변수와 마찬가지로 괄호 (IPv6 주소용) 와 같은 선택 가능한 속성도 사용할 수 있습니다.
    server {
    listen 80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
    }
     

    방법


    다음 코드 세그먼트는 연결이 암호화되지 않은 경우, 즉 포트 80이 요청을 받으면 지정한 영역의 보안 버전으로 바뀝니다.서버 {} 블록의 모든 위치로 복사해야 하지만 서버\uname 매개 변수 뒤에 복사해야 합니다.
    if ($scheme != "https") {
    return 301 https://$host$request_uri;
    }
     

    IP 주소에서 방향 변경


    공유 호스트와 달리 전용 서버와 가상 전용 서버는 항상 전용 IP 주소를 할당합니다.만약 웹 서버에 밑줄이 있는 Nginx가 설정되어 있다면, IP 주소에 대한 모든 요청은 이 사이트를 방문할 수 있습니다.여러 가지 이유로 IP 주소를 통해 사이트를 방문하는 것은 모든 사이트 관리자가 원하는 것이 아니다.다른 한편, 모든 요청이 처리되면 악성 사용자는 임의의 도메인을 웹 서버와 연결할 수 있는데 이것은 브랜드 이름이나 업무에 좋지 않기 때문에 특정 도메인이나 IP 주소로만 처리하는 요청이 중요하다.이 절은 이러한 상황에서 웹 서버의 IP 주소에 대한 요청을 어떻게 처리하는지 보여 줍니다.이 코드 블록을 상기 코드 블록 중 하나와 함께 사용하면 (이전 해결 방안의 방법 2를 제외하고) 모든 요청이 이 두 도메인을 가리키고 IP가 필요한 목표로 리디렉션될 수 있습니다.
    위에서 설명한 대로 다음 코드 세그먼트를 Nginx의 기본 파일로 복사합니다(예약, 3단계).서버\uname 매개 변수에 도메인 이름을 사용하지 말고 서버의 IP 주소를 사용하고 다음 줄에서 "return 301domain"을 사용하여 요청한 위치를 다시 지정합니다.현재 서버가 이 특정 IP 주소에 대한 요청을 받으면 지정한 도메인으로 리디렉션됩니다.가장 좋은 예는 랜덤 사용자가 웹 서버의 IP를 입력하여 사이트에 직접 접근할 때이다.다음 코드 세그먼트가 기본 파일의 어느 위치에서도 선언되지 않으면 IP에 대한 요청이 처리되지 않습니다.따라서 사용자는 IP 주소를 통해 사이트에 접근할 수 없습니다.
    server {
    listen 80;
    listen [::]:80;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name 192.168.1.1;
    return 301 https://nucuta.com;
    }

    다른 도메인에서 방향 변경


    이 해결 방안은 이 안내서의 첫 번째 해결 방안과 같다. 단지 웹 서버의 443 포트로 요청을 다시 정할 뿐이다. 이것은 안전과 비안전 요청이 매개 변수에 지정된 영역으로 되돌아간다는 것을 의미한다.앞에서 말한 바와 같이 기본 파일로 복사하기만 하면 됩니다.
    server {
    listen 80;
    listen [::]:80;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name domain.com www.domain.com;
    return 301 https://nucuta.com;
    }
     

    원고 작성 중


    상술한 해결 방안 중 하나를 따르면nginx 파일을 컴파일하여 설정이 효력을 발생하도록 해야 합니다.단, 컴파일하기 전에 기본 파일을 테스트해야 합니다. 설정에 오류가 발생하면 웹 서버의 충돌을 방지할 수 있기 때문입니다.
  • Linux 터미널에서 다음 명령을 사용하여 기본 프로필을 테스트하면 결과가 양호하고 다음 단계를 계속할 수 있습니다.
  • sudo nginx -t
  • 다음 명령 중 하나를 사용하여 Nginx 웹 서버를 다시 시작합니다.이 명령은 Linux 릴리스의 이름과 버전에 따라 다릅니다.
  • sudo systemctl restart nginx
    sudo service nginx reload
    sudo /etc/init.d/nginx reload