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.