동일한 호스트에서 여러 루비 앱이 실행 중입니다.
~/app1
~/app2
~/app3
그리고 나는 다음과 같은 하위 디렉토리를 사용하여 이러한 앱을 nginx 프록시로 만들고 싶습니다.
http://example.com/app1
http://example.com/app2
http://example.com/app3
nginx가 여러 파일에서 이러한 위치를 정의 할 수 있도록 지원하면 모든 앱에 대해 하나의 모 놀리 식 구성 파일을 사용하는 대신 각 구성을 앱으로 유지할 수 있는지 궁금합니다.
~/app1/nginx.conf
~/app2/nginx.conf
~/app3/nginx.conf
세 가지 구성 파일 각각에 단일 위치 지시문으로 서버를 정의하려는 순진한 시도로 conflicting server name "example.com" on [::]:80, ignored
다음과 같은 구성이 발생했습니다.
upstream app1 { server 127.0.0.1:4567; }
server {
listen [::]:80;
listen 80;
servername example.com
location /app1 {
proxy_pass http://app1;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Request-Start $msec;
}
}
이 방법으로 구성을 구성하는 방법이 있습니까?
답변
include를 통해 외부 구성을 포함 할 수 있습니다.
include /path/to/config1.conf;
include /path/to/config2.conf;
include /path/to/confdir/*.conf;
server {
server_name example.com;
listen [::]:80;
listen 80;
}
별도의 구성 내에서 유효한 코드 블록을 사용할 수 있습니다.
upstream app1 {
server 127.0.0.1:8080;
}
location /app1 {
proxy_pass http://app1;
}
답변
이 구성을 사용할 수 있다고 생각합니다.
server {
server_name example.com;
listen [::]:80;
listen 80;
include /path/to/applications/*/nginx.conf;
}
그런 다음 각 응용 프로그램의 디렉토리에서 다음과 같이 리디렉션을 구성하십시오.
location /app1 {
proxy_pass http://app1;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Request-Start $msec;
}