루트에서 nginx 리디렉션 구성

루트에서 nginx 리디렉션 구성

nginx를 구성하려고 하는데 여러 번 시도했는데도 작동하지 않습니다. 나에게 필요한 것은:

  • 포트 80은 /downloadnginx에서 제공됩니다.
  • 포트 80, 다른 모든 것은 동일한 시스템, 포트 8080으로 리디렉션됩니다.

이것은 잘 작동하지만 이제는 루트(http://myhost/) 클라이언트는 의 기본 앱으로 리디렉션됩니다 /Games. 현재 구성이 잘못되어 무한 루프로 리디렉션됩니다. 나는에게서 몇 가지 아이디어를 얻었습니다.여기하지만 그것을 작동시킬 수 없었습니다. 리디렉션의 예:

ex1: http://myhost/  --> http://myhost/Games --> http://localhost:8080/Games
ex2: http://myhost/Books --> http://localhost:8080/Books

나는 시도했다

        location / {
            proxy_pass  http://localhost:8080/Games;
        }

하지만 이는 모든 것에 작용하는 것 같습니다(예: /Books, /XYZ, ...). 정확한 루트가 지정되었을 때 리디렉션하는 것이 가장 깨끗하다고 ​​생각합니다.

또한 이를 HTTPS에서 복제해야 합니다. 나는 이것이 "스트림" 요소에서도 작동할 것이라고 생각합니다.


nginx.conf:

http {
    server {
        listen  80;
        root /home/www/;
        location = / {
            return 301 http://$host/Games;
        }
        location / {
            proxy_pass  http://localhost:8080;
        }
        location /download/ {
            ....
        }
    }
}

stream {
    server {
        listen  443;
        ...
    }   
} 

답변1

여기서 질문은 정확히 무엇입니까? 귀하의 구성이 저에게 적합합니다.

server {
    listen 80;
    listen [::]:80;

    server_name 192.168.0.2;
    root /var/www;

    location = / {
        return 301 http://$host/folder;
    }

    location / {
        proxy_pass http://otherserver:80;
    }
}

로그:

[22/Feb/2018:17:04:55 +0100] "GET / HTTP/1.1" 301
[22/Feb/2018:17:04:55 +0100] "GET /folder HTTP/1.1" 301
[22/Feb/2018:17:04:55 +0100] "GET /folder/ HTTP/1.1" 200
[22/Feb/2018:17:11:29 +0100] "GET /index.html HTTP/1.0" 200

로그에서 무엇을 볼 수 있나요? 요청이 전혀 프록시되지 않습니까? 아니면 로컬 호스트가 문제를 유발합니까? 로컬호스트의 구성은 어떻게 생겼나요? 도움을 드릴 수 있는 정보가 너무 부족합니다.

또한 이를 HTTPS에서 복제해야 합니다. 나는 이것이 "스트림" 요소에서도 작동할 것이라고 생각합니다.

무슨 뜻인지 잘 모르겠지만 SSL 지시문 listen 443대신 동일한 구성을 사용하여 다른 서버 블록을 추가할 수 있습니다.listen 80

관련 정보