nginx proxy_set_header不起作用

时间:2017-12-01 12:30:19

标签: python nginx flask

背景

运行docker进程的supervisord容器启动了2个进程 - nginxuwsgi(是的,我知道这可能会让docker'错误'。这不是问题)

uwsgi点击python flask个应用。这已连接记录器,并将标题字典打印到信息日志。

我有一个postman请求,可以从我的本地方框进行测试,点击docker容器,通过nginx路由并点击python app,并附上信息日志。

正在记录邮递员发送的自定义标题(感谢ignore_invalid_headers off;)

问题

我想使用nginx来装饰一些其他标头的传入请求。无论我尝试什么,我都无法让它发挥作用。我在nginx conf中添加的标头似乎都没有通过flask应用。

我尝试过proxy_set_header或uwgi_param。没有变体似乎有效。 请注意 - 我想要一个请求标头。我相信add_header是响应头。

nginx.conf:

user nginx; 
worker_processes auto; 
pid /run/nginx.pid;

events {
        worker_connections 768;
    }

http {
        include /etc/nginx/mime.types;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        include /etc/nginx/conf.d/*.conf;        
        include /etc/nginx/sites-enabled/*;

        underscores_in_headers      off;
        ignore_invalid_headers      off;

        upstream myapp {
            server unix:/run/myapp.sock;
        }

        server {
            listen 80;
            location / {
                include                     uwsgi_params;

                uwsgi_pass                  myapp;

                proxy_set_header            x-proxy-set-header x-proxy-set-header-value;
                proxy_set_header            sampl-header ONE;
                uwsgi_param                 X-add-uwsgi-param x-added-uwsfi-param-value;
            }
        } 
}

daemon off;

非常感谢任何帮助!!

1 个答案:

答案 0 :(得分:1)

因此。解决了。正如理查德史密斯也发现 - proxy_pass不起作用,因为我使用uwsgi_pass作为自定义协议。

SO。这有效:

location / {
            include                     uwsgi_params;

            uwsgi_pass                  myapp;
            uwsgi_pass_request_headers on;
            uwsgi_param HTTP_X_TESTING 'bar';
        }

我们正在做天然气...... Air Punch