标签: http

为 CLI 上的 HTTP 标头创建创建符合 RFC 1123 的日期

我正在尝试使用标准 unix date(1) 创建一个符合 HTTP 1/1 的日期标头,以便使用curl 或类似工具将其发布到 RESTful 服务器。

有什么想法可以传递给 date(1) 以使其符合 RFC 1123 要求吗?

非常感谢

http bash rfc date

2
推荐指数
1
解决办法
3825
查看次数

如何进行 Apache 301 重定向以保留引荐来源网址?

我的 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)

php mod-rewrite http apache-2.4

2
推荐指数
1
解决办法
4421
查看次数

即使已激活,Firewalld 也会阻止 http 流量

我正在尝试用 3 台机器配置一个简单的测试环境:

  • 一台Kali模拟互联网:IP = 10.99.0.2
  • 一台使用firewalld充当防火墙的CentOS:IP = 10.99.0.1, 10.4.1.1
  • 一台 CentOS,使用 httpd 作为 Web 服务器:IP = 10.4.1.2

环境的一个小表示:

|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)

http httpd port-80 firewalld firewalld-zone

2
推荐指数
1
解决办法
4774
查看次数

NGINX 缓存(相同 URL)首先将 MISS 返回给所有 Chrome、Curl 和 Wget

我有一个 nginx 缓存代理,它从 apache 原始服务器获取内容。

我从curlwget和发出请求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)

http nginx web-server cache http-caching

2
推荐指数
1
解决办法
2378
查看次数

Apache2 错误 --- .htaccess:此处不允许评论

今晚我将我的 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)

http apache-2.4 php7 ubuntu-18.04

2
推荐指数
1
解决办法
1705
查看次数

“access-control-allow-origin”是限制两个服务器之间通信的安全方法吗?

我有两台服务器,A 和 B。我希望服务器 B 只接受来自服务器 A 的 HTTP 请求。“access-control-allow-origin”是实现该功能的安全方法吗?

security http http-headers

2
推荐指数
1
解决办法
336
查看次数

在 linux 服务器中捕获出站 http 数据包的工具

我正在寻找一种工具来捕获从 linux 服务器发送到外部服务器的 http 数据包。通常我使用 iftop 或 iptraf 和过滤器来查看实时信息和 tcpdump 来获取详细信息。但是我现在需要的是某种方法来捕获对某个日志文件的所有 url 请求。我知道我可以配置一个代理来记录所有这些信息,但这是不可能的,因为我们的实际架构。你知道一些可以获取这些信息的工具吗?或者我是否需要制作一个脚本来处理来自 tcpdump 的信息?

http packet-sniffer

1
推荐指数
1
解决办法
2970
查看次数

受保护的 Apache Web 子目录两次要求输入密码

我有一个带有密码保护的 web 目录的 Apache 服务器。该目录有一个子目录,需要另一个密码,但任何可以访问子目录的人也应该可以访问父目录。那是:

  • /stuff - 允许用户“stuff”和“admin”
  • /stuff/admin - 只允许用户“admin”

所以我在 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 的用户只登录一次(作为“管理员”),而不是两次?

security permissions http .htaccess apache-2.2

1
推荐指数
1
解决办法
4995
查看次数

我可以将我的 DNS 指向一个带有非标准 HTTP 端口的 IP

可能重复:
如何将域重定向到特定端口

我有一个域,我希望域是这样的:

example.com -> 32.432.32.34:99

这可能吗?

domain-name-system http

1
推荐指数
1
解决办法
2301
查看次数

access_log 中奇怪的 http 请求

我在 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 logging apache-2.2

1
推荐指数
1
解决办法
232
查看次数