我已将 Apache 设置为负载平衡器。我想让 apache 设置 X-Forwarded-Proto 标头,但这不起作用:
RequestHeader set X-Forwarded-Proto "%{SERVER_PROTOCOL}e"
Run Code Online (Sandbox Code Playgroud)
标头设置为空。知道为什么吗?
我们正在运行一个 API,有很多人在使用它。由于我的一些遗留问题,其中一个端点返回了错误的 content-type header,js而它应该是json. 我的问题是,如果我们通过交换来返回正确的值来解决这个问题,那么对于我们现有的客户来说,事情会有多严重?或者换一种说法,您是否希望许多不同的 HTTP 客户端库在看到这样的变化时抛出致命错误?
我们正在尝试确定这是一个我们可以继续进行的更改,而不必担心太多,或者我们应该仔细地向所有用户发送电子邮件并宣布一个多年的弃用期……或者介于两者之间。
这可能在一定程度上取决于正在使用的不同 HTTP 客户端的类型,因此我查看了用户代理。答案:很多不同的!以下是一些顶级的:
"okhttp/3.2.0", "python-requests/2.10.0", "Ruby", "python-requests/2.7.0", "Mozilla/5.0", "Java/1.8.0_91", "python-requests" /2.4.3", "okhttp/3.3.0", "Lucee", "Dalvik/2.1.0", "Google-HTTP-Java-Client/1.21.0", "PHP_appname", "NativeHost", "Java /1.7.0_67", "Apache-HttpClient/UNAVAILABLE", "Dalvik/1.6.0", "Web-sniffer/1.1.0", "unirest-objc/1.1"
各种不同的移动和服务器端语言库。大多数不是运行 javascript 的浏览器,但也有一些。
大多数人似乎没有注意到内容类型是错误的,但时不时会弹出一个新的支持请求,抱怨这个问题,所以我们想修复它。
我不确定如何将引用策略标头添加到我的虚拟主机配置文件中。
假设我想添加这样的东西Referrer-Header: same-origin,应该是这样的:
Header set Referrer-Header: same-origin
Run Code Online (Sandbox Code Playgroud) 我需要确定服务器(Apache 2)是否正在返回页面的完整内容及其正确的标题。我有一个成功执行的 PHP 脚本,但浏览器只获取了一半的 html 内容,它只是被切断了。
客户端基础结构非常复杂,使用 Novell BorderManager 代理和其他东西。为了确保服务器正常工作,我想记录响应的标题和正文。
我怎样才能做到这一点?我查看mod_log_config了 apache的模块(已经安装并准备使用),但老实说我并没有设法将它配置为在某处输出标题和正文。
编辑:我设法用
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{HEADER_NAME}o\"" common2
CustomLog /var/log/apache2/response.log common2
但不幸的是mod_log_config 格式不支持整个内容正文。
更新:我发现 accross mod_dumpio似乎正是这样做的,但到目前为止我无法让它工作:-(
任何人都可以帮忙吗?
我已经设置了我的 nginx.conf 文件以使用我在网上找到的教程中的代理缓存。现在我想弄清楚如何检查它是否真的有效。
我在某处读到添加add_header X-Cache-Status $upstream_cache_status;到服务器部分的配置文件应该向响应添加一个缓存标头,该标头将显示它是否来自缓存(具有 HIT、MISS 或 EXPIRED 的值)。
我想知道我在哪里可以实际查看此标题(及其值),以及这是否是正确的方式/是否还有另一种方式。总的来说,我对网络技术很陌生,如果这是一个菜鸟问题,我很抱歉。谢谢!
我有以下设置并配置为将所有 /api 请求发送到不同的服务器:
location /api {
proxy_pass https://myapp.herokuapp.com;
rewrite ^/api/(.*) /$1 break;
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序发送一个标头 (USER_CUSTOMER),当从它工作的应用程序直接与 myapp.herokuapp.com 通信时,但是当通过代理服务器请求时,该值在 API 服务器上显示为 NULL。
以下在 NGINX 中有效,但我需要该应用程序能够设置 USER_CUSTOMER 的值。
location /api {
proxy_pass https://app.herokuapp.com;
proxy_set_header USER_CUSTOMER ABC;
rewrite ^/api/(.*) /$1 break;
}
Run Code Online (Sandbox Code Playgroud)
将来我可能有额外的标头要发送,所以我希望有一个标志可以将所有标头从代理传递到 API 服务器。
Ubuntu
nginx/1.1.19
Run Code Online (Sandbox Code Playgroud) 我有一个提供静态 JSON 文件的 Apache 服务器。内容类型在带有Content-Type: application/json标题的标题中正确表示。
如何将正确的字符集添加到标题中?
我在我的以下行httpd.conf:
AddDefaultCharset utf-8
Run Code Online (Sandbox Code Playgroud)
但即使有这一行,Apache 也不会在标题中设置字符集。
这很重要,因为我的 JSON 文件有一些法语数据,并且在 JavaScript 代码中没有正确读取口音。
那么如何在 Apache 中为 JSON 设置正确的标头?
我有一个简单的 apache 虚拟主机:
<VirtualHost *:80>
ServerName hello.local
ProxyPass / http://localhost:8810/
ProxyPassReverse / http://localhost:8810/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
所有对 hello.local 的请求都被代理到http://localhost:8810/. 我想要做的是向 http 请求添加一个标头,该请求将http://localhost:8810/使用外部命令返回的值。就像是
Header set MyHeader ${/usr/bin/an_external_program}
有什么办法可以做到这一点吗?
这个 nginx 实例的目的是让 GitLab 和 OpenWRT Luci 通过反向代理重定向。它已经在其他几个网站上工作,所有网站都有一个基本网址,似乎可以解决这个问题。
示例位置的相关 nginx 配置是;
location /gitlab/ {
proxy_pass http://127.0.0.1:9000/;
proxy_redirect default;
}
Run Code Online (Sandbox Code Playgroud)
有一些标头代理配置选项应用于此位置。
# Timeout if the real server is dead
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
# Basic Proxy Config
proxy_set_header Host $host:$server_port;
proxy_set_header Origin $scheme://$host:$server_port;
proxy_set_header Connection $http_connection;
proxy_set_header Cookie $http_cookie;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header …Run Code Online (Sandbox Code Playgroud) 我在 tomcat 服务器前使用 HAproxy 1.6 作为负载平衡器。
我需要根据请求 URI 添加响应标头。
例如,Cache-Control public,max-age="600"当请求 uri 是/api但不是当请求 uri 是其他东西时,我想添加响应头。
我的第一次尝试是使用基于路径的 acl 将标头添加到 http-response:
acl api path_reg ^/api/(.*)$
http-response add-header Cache-Control public,max-age="600" if api
Run Code Online (Sandbox Code Playgroud)
当我用 开始haproxy 时-d,我有警告说path_reg(或path)与http-response以下不兼容:
Dec 6 15:22:29 ip-10-30-0-196 haproxy-systemd-wrapper[315]:
[WARNING] 340/152229 (2035) : parsing
[/etc/haproxy/haproxy.cfg:78] : acl 'api' will never match because
it only involves keywords that are incompatible with 'backend
http-response header rule'
Run Code Online (Sandbox Code Playgroud)我试图添加标题http-request而不是http-response:
acl …Run Code Online (Sandbox Code Playgroud)http-headers ×10
apache-2.2 ×4
http ×3
nginx ×3
apache-2.4 ×2
cache ×1
encoding ×1
haproxy ×1
logging ×1
proxy ×1