我正在尝试使用标准 unix date(1) 创建一个符合 HTTP 1/1 的日期标头,以便使用curl 或类似工具将其发布到 RESTful 服务器。
有什么想法可以传递给 date(1) 以使其符合 RFC 1123 要求吗?
非常感谢
我的 httpd.conf 文件中有一个 Apache 301 重定向,它将所有流量重定向到单个域以实现标准化。我最近注意到此重定向不会在标头中保留引荐来源网址。 RFC2616似乎表明在重定向中保留引荐来源网址是可选的,并且实际上建议在 HTTP 和 HTTPS 之间交叉时不要这样做。
不过,我发现了其他问题,其中简单的 Apache 301 重定向保留了引用者,并且默认情况下通常是这种情况。还有哪些其他因素可能会影响这种行为,我可以利用这些因素来保留推荐人?唯一的因素是否基于 Apache 服务器版本和/或客户端的浏览器设置(IE。超出我的控制范围)?
我的重定向:
ServerAlias www.example.com sub1.example.com
## Redirect all sub-domains to www
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
关于上述重写规则,我正在访问http://sub1.example.com. 为了简单起见,我目前只是使用 HTTP,直到我能弄清楚这一点。
我确定引荐来源网址未被保留的方法是通过打开开发人员工具的浏览器手动访问重定向的站点。我还确定引荐来源网址未包含在$_SERVER接收页面上的 PHP 全局中。我可以确认仅发生 1 次重定向。服务器端语言是PHP。
以下是初始页面 (sub1.example.com) 的请求标头:
GET / HTTP/1.1
Host: sub1.example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate …Run Code Online (Sandbox Code Playgroud) 我正在尝试用 3 台机器配置一个简单的测试环境:
环境的一个小表示:
|Kali|------------------(ens160) |Firewalld| (ens192)------------------- |Web Server|
10.99.0.2 10.99.0.1 | 10.4.1.1 10.4.1.2
Run Code Online (Sandbox Code Playgroud)
我可以从 10.99.0.2 ping 10.4.1.2,但是,只有当防火墙激活时,我无法从 10.99.0.2 获取 10.4.1.2 上的默认网页。
我尝试在固件上执行 tcpdump,我可以看到从 kali 到firewalld 的 http 请求,但随后firewalld 用 ICMP 数据包进行响应:ICMP host 10.4.1.2 unreachable - admin prohibited。据我所知,如果请求被阻止,则此 icmp 消息是从防火墙发送的。
这是两个区域的配置:public 和 dmz
public (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: http https
ports: 443/tcp 80/tcp
protocols:
masquerade: yes
forward-ports:
sourceports: …Run Code Online (Sandbox Code Playgroud) 我有一个 nginx 缓存代理,它从 apache 原始服务器获取内容。
我从curl、wget和发出请求Chrome来验证缓存响应。问题是,对于相同的 URL,我总是MISS 在每个单独的客户端中得到第一次。
我希望在我向任何客户提出一个请求后,其他客户会得到一个HIT,但我得到了MISS。
HIT我只有在同一个客户端重复请求时才会收到。
感觉 key 与用户代理有关,但事实并非如此:
proxy_cache_key $scheme://$host$request_uri;
Run Code Online (Sandbox Code Playgroud)
为了排除不同的HTTP版本和用户代理,我在请求中指定了它们(wget默认使用http1.1),它们都显示GET在日志中,所以不是HEAD
wget --server-response --user-agent "foo" 'https://www.example.com/x.php?124'
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Tue, 03 Mar 2020 19:53:53 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.4.16
X-Accel-Expires: 3600
Vary: Accept-Encoding
X-Cache: MISS <<<<<<<<<<<<<<<<<<<<<<<<<< there
# repeating the request again with WGET will get …Run Code Online (Sandbox Code Playgroud) 今晚我将我的 VPS 从 Ubuntu 16.04 LTS 升级到 Ubuntu 18.04 LTS。一切都按预期进行,对 php aisle 5.6 进行了一些清理,并在 php aisle 7.4 上进行了一些库存货架。在我更改所有配置和模组后,Apache 毫无怨言地重新启动了;我以为我可以走了。但我的 4 个网站中有 3 个无法加载;没有干净的 404 页面,只有这个错误配置消息。
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Run Code Online (Sandbox Code Playgroud)
审查后/var/log/apache2/error.log,我发现了这一点:
[Wed May 06 03:55:16.190469 2020] [core:alert] [pid 5657] [client 10.10.10.10:56897]
/var/www/abc/example.com/.htaccess: No comments are allowed here, referer: https://example.com/
Run Code Online (Sandbox Code Playgroud)
在尝试了几种不同的方法之后,似乎开始行的注释不是问题,而是结束文件正常行的注释。删除这些评论或将这些#main office评论移动到自己的行中将使所有内容恢复在线。该# Allow from this IP address行仍在我的 .htaccess 文件中,但不会给我带来任何悲伤。
<Files wp-login.php>
order …Run Code Online (Sandbox Code Playgroud) 我有两台服务器,A 和 B。我希望服务器 B 只接受来自服务器 A 的 HTTP 请求。“access-control-allow-origin”是实现该功能的安全方法吗?
我正在寻找一种工具来捕获从 linux 服务器发送到外部服务器的 http 数据包。通常我使用 iftop 或 iptraf 和过滤器来查看实时信息和 tcpdump 来获取详细信息。但是我现在需要的是某种方法来捕获对某个日志文件的所有 url 请求。我知道我可以配置一个代理来记录所有这些信息,但这是不可能的,因为我们的实际架构。你知道一些可以获取这些信息的工具吗?或者我是否需要制作一个脚本来处理来自 tcpdump 的信息?
我有一个带有密码保护的 web 目录的 Apache 服务器。该目录有一个子目录,需要另一个密码,但任何可以访问子目录的人也应该可以访问父目录。那是:
所以我在 Apache 配置中这样设置:
<Directory "/stuff">
[AuthType Basic, AuthName, etc.]
Require user stuff
Require user admin
</Directory>
<Directory "/stuff/admin">
[AuthType Basic, AuthName, etc.]
Require user admin
</Directory>
Run Code Online (Sandbox Code Playgroud)
这在某种意义上是有效的,我可以浏览到 /stuff 并以“admin”或“stuff”身份登录。但是,/stuff/admin 中的页面引用了父目录中的一些图像。我发现当我直接浏览到 /stuff/admin 并以“admin”身份登录时,浏览器仍然提示我输入另一个密码来加载这些图像。(我知道这是 /stuff 的提示,因为 AuthName 值不同。)
我如何避免这种情况并允许有权访问 /stuff/admin 的用户只登录一次(作为“管理员”),而不是两次?
我在 access_log 中看到奇怪的请求
124.31.204.10 - - [24/Jan/2010:09:37:29 +0000] "CONNECT 205.188.251.43:443 HTTP/1.0" 500 10488 "-" "-"
Run Code Online (Sandbox Code Playgroud)
这些 IP 都不是我的:
124.31.204.10 - 这似乎来自中国
205.188.251.43 - 这个来自美国
任何想法这可能是什么?
http ×10
apache-2.2 ×2
apache-2.4 ×2
security ×2
.htaccess ×1
bash ×1
cache ×1
date ×1
firewalld ×1
http-caching ×1
http-headers ×1
httpd ×1
logging ×1
mod-rewrite ×1
nginx ×1
permissions ×1
php ×1
php7 ×1
port-80 ×1
rfc ×1
ubuntu-18.04 ×1
web-server ×1