2017-05-03 37 views
0

我已经退出了一些使用Oauth(而不是Oauth2)的API。我们将所有的站点从Apache转移到Nginx(使用fastcgi),并且遇到了未发送请求头的问题。我已经阅读了大量的帖子和Nginx文档,但我仍然无法获得头文件params通过。在Nginx中使用fastcgi传递请求头文件

我使用的邮差,使API请求,并设置这些标题:

Postman headers

我终于设法得到头的关键展现出来时,我var_dump($_SERVER);但我不能得到实际值通过。

这是我的主要nginx.confhttp块:

http { 
    include mime.types; 
    default_type application/octet-stream; 

    sendfile on; 
    keepalive_timeout 6000; 
    client_max_body_size 128M; 

    gzip on; 
    gzip_comp_level 5; 
    gzip_min_length 256; 
    gzip_proxied any; 
    gzip_vary on; 

    gzip_types 
    application/atom+xml 
    application/javascript 
    application/json 
    application/rss+xml 
    application/vnd.ms-fontobject 
    application/x-font-ttf 
    application/x-web-app-manifest+json 
    application/xhtml+xml 
    application/xml 
    font/opentype 
    image/svg+xml 
    image/x-icon 
    text/css 
    text/plain 
    text/x-component; 

    include /Users/webdev2/.valet/Nginx/*; 
    include servers/*; 
    include valet/valet.conf; 
} 

这里是我的valet.conf

server { 
    listen 80 default_server; 
    root /; 
    charset utf-8; 

    location /41c270e4-5535-4daa-b23e-c269744c2f45/ { 
     internal; 
     alias /; 
     try_files $uri $uri/; 
    } 

    location/{ 
     rewrite^/Users/webdev2/.composer/vendor/laravel/valet/server.php last; 
    } 

    location = /favicon.ico { access_log off; log_not_found off; } 
    location = /robots.txt { access_log off; log_not_found off; } 

    access_log off; 
    error_log /Users/webdev2/.valet/Log/nginx-error.log; 

    error_page 404 /Users/webdev2/.composer/vendor/laravel/valet/server.php; 

    location ~ \.php$ { 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/Users/webdev2/.valet/valet.sock; 
    fastcgi_pass_request_headers on; 
    fastcgi_pass_header Authorization; 
    fastcgi_pass_header http_oauth_token; 
    fastcgi_pass_header oauth_token_secret; 
     fastcgi_index /Users/webdev2/.composer/vendor/laravel/valet/server.php; 
     include fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME /Users/webdev2/.composer/vendor/laravel/valet/server.php; 
     fastcgi_read_timeout 300; 
    } 

    location ~ /\.ht { 
     deny all; 
    } 
} 

最后,这里是我的fastcgi_params文件:

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_FILENAME $request_filename; 
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 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; 
fastcgi_param HTTPS $https if_not_empty; 
fastcgi_param REDIRECT_STATUS 200; 
fastcgi_param HTTP_PROXY ""; 
fastcgi_param HTTP_AUTHORIZATION $http_authorization; 
fastcgi_param OAUTH_TOKEN $http_oauth_token; 
fastcgi_param OAUTH_TOKEN_SECRET $http_oauth_token_secret; 

这里012的响应图像。注意:此var_dump是在应用程序中的其他任何内容被调用之前。

enter image description here

回答

0

好了,经过周围挖,并试图弄清楚这一点,第2天,我终于得到了它的工作。缺少的部分是添加这一行:在nginx.conf

underscores_in_headers on;

在我的主要http块。所以,这里是我的nginx.conf的最终http块看起来像:

http { 
    include mime.types; 
    default_type application/octet-stream; 

    sendfile on; 
    keepalive_timeout 6000; 
    client_max_body_size 128M; 

    gzip on; 
    gzip_comp_level 5; 
    gzip_min_length 256; 
    gzip_proxied any; 
    gzip_vary on; 

    gzip_types 
    application/atom+xml 
    application/javascript 
    application/json 
    application/rss+xml 
    application/vnd.ms-fontobject 
    application/x-font-ttf 
    application/x-web-app-manifest+json 
    application/xhtml+xml 
    application/xml 
    font/opentype 
    image/svg+xml 
    image/x-icon 
    text/css 
    text/plain 
    text/x-component; 

    underscores_in_headers on; # This beauty right here :D 

    include /Users/webdev2/.valet/Nginx/*; 
    include servers/*; 
    include valet/valet.conf; 
} 
相关问题