Nginx variables similar to SetEnv in Apache?

前端 未结 4 1939
遥遥无期
遥遥无期 2020-11-27 13:59

I use SetEnv in Apache to set some variables in virtualhosts that I recover in PHP using $_SERVER[the_variable].

Now I am switching to Perl Catalyst and

相关标签:
4条回答
  • 2020-11-27 14:17

    The fastcgi_pass socket location needs to come first, then each of the fastcgi_param parameters. You can also list variables in a file in the nginx config folder, then include that file. The include file commonly has the name fastcgi_params. Your environment parameters can be added easily to the php handling block:

            location ~ \.php$ {
                fastcgi_pass     unix:/your_sock_location/nginxFastCGI.sock;
                fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param    APP_ENV production;
                include          fastcgi_params;
            }
    

    The fastcgi_params file located in the same directory as nginx.conf often looks like this:

    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param  QUERY_STRING       $query_string;
    fastcgi_param  REQUEST_METHOD     $request_method;
    fastcgi_param  CONTENT_TYPE       $content_type;
    fastcgi_param  CONTENT_LENGTH     $content_length;
    
    fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
    fastcgi_param  REQUEST_URI        $request_uri;
    fastcgi_param  DOCUMENT_URI       $document_uri;
    fastcgi_param  DOCUMENT_ROOT      $document_root;
    fastcgi_param  SERVER_PROTOCOL    $server_protocol;
    fastcgi_param  HTTPS              $https if_not_empty;
    
    fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
    fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
    
    fastcgi_param  REMOTE_ADDR        $remote_addr;
    fastcgi_param  REMOTE_PORT        $remote_port;
    fastcgi_param  SERVER_ADDR        $server_addr;
    fastcgi_param  SERVER_PORT        $server_port;
    fastcgi_param  SERVER_NAME        $server_name;
    
    0 讨论(0)
  • 2020-11-27 14:20
    location / {
    ...
       fastcgi_param   APPLICATION_ENV  production;
       fastcgi_param   APPLICATION_CONFIG user;
    ...
    }
    

    but it's for PHP-CGI

    0 讨论(0)
  • 2020-11-27 14:24

    NGINX doesn't manage your backend processes like apache does, so it can't affect their environments. To set a new $_SERVER PHP variable from NGINX, you need to add a new fastcgi_param entry along with the rest of them. Wherever you're including fastcgi_params or fastcgi.conf.

    0 讨论(0)
  • 2020-11-27 14:32

    You should keep in mind, that nginx doesn't manage php processes like apache does. You should config either php-fpm, or php-cgi, relying what runs php on your server.

    php-cgi

    ...
    env[APP_ENV] = production
    ...
    

    php-fpm

    location / {
        ...
        fastcgi_param APP_ENV production; 
        ...
    }
    
    0 讨论(0)
提交回复
热议问题