Nginx에서 서버 특정 ENV 값을 어떻게 설정합니까?


9

환경 변수를 사용하여 데이터베이스 연결과 다른 몇 가지를 설정하는 프로젝트를 시작하고 있습니다. (사람들은 부주의하고 덮어 쓰기 때문에 구성 파일을 사용하고 싶지 않았습니다).

어쨌든, 나는 nginx를 사용하고 있으며 env를 지원 하는 동안 충분히 지원 하지 않는 것 같습니다 . 서버 당 블록 단위로 env 값을 설정할 수 없습니다 . 즉, 이것은 작동하지 않습니다.

server {
    listen 80;
    server_name domain;
    env FOO = "bar";
}

이 작업을 수행해야합니다.

env FOO = "bar";

http {
    server {
        listen 80;
        server_name domain;
    }
}

즉, 호스트 별 값을 가질 수 없습니다. 따라서 각 사이트에 대해 전체 vhost 구성을 작성하고 값이 올바르게 설정되도록 현재 원하는 구성 만 활성화해야합니다.

이 문제를 해결할 방법이 있습니까?


nginx 설정이 응용 프로그램의 설정만큼 덮어 쓰기에 취약하지 않습니까? 애플리케이션에 요청을 공급하기 위해 어떤 모듈을 사용합니까?
Shane Madden

@ShaneMadden, nginx 설정은 프로젝트의 일부가 아니지만 각 서버에서 수동으로 생성해야합니다. 덮어 쓰지 않습니다. 내가 게시 한 것은 전체 구성입니다. 우리는 또한 표준 fastcgi_pass을 사용 하여 요청을 ruby ​​/ php로 전달합니다.
Xeoncross

답변:


13

fastcgi를 사용하는 경우 fastcgi_param 의 값을 전달 하여이 문제해결할 수 있습니다.

server {
    listen 80;
    server_name domain;

    # Pass PHP scripts to php-fastcgi listening on port 9000
    location ~ path/to/it {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param FOO "bar";
    }
}

그렇습니다, 그것은 내가 제안하려고했던 것입니다. 날 이길! (오늘 투표에서 제외되었습니다.이 답변을 조금만 찬성하겠습니다)
Shane Madden

@ShaneMadden 아마도 당신이 나를 도울 수 있습니다.
Xeoncross

2
server_name그래도 동적으로 설정하는 방법이 있습니까? OS X에서 실행되는 가상 호스트이므로 nginx 호스트의 IP가 다르므로 확인되지 않습니다.
taco
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.