运行docker
进程的supervisord
容器启动了2个进程 - nginx
和uwsgi
(是的,我知道这可能会让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;
非常感谢任何帮助!!
答案 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