我正在开发一个 HTTP 服务器,它应该只允许每个用户有一定数量的连接。我如何优雅地告诉用户n不允许多个连接。我尝试n+1用 403回答th 请求,但显然这会杀死整个下载。(至少有DownThemAll!)
我有一台运行在数据中心的 linux 服务器,它有一些额外的带宽和资源。
我想设置一个代理服务,以便我可以通过它从家里路由我所有的 http/https 流量。我知道如何配置我的浏览器与代理交谈,我只是不知道如何设置它的服务器端。我还想进行身份验证,以便只有我可以使用它
经过一些调试,我发现 mod_security 的核心规则集会阻止没有(可选!)ACCEPT 标头字段的请求。
这是我在日志中找到的内容:
ModSecurity:警告。需要匹配“rx ^OPTIONS$”与“REQUEST_METHOD”。[文件“/etc/apache2/conf.d/modsecurity/modsecurity_crs_21_protocol_anomalies.conf”] [行“41”] [id“960015”] [msg“请求缺少接受头”] [严重性“关键”] [标签“ PROTOCOL_VIOLATION/MISSING_HEADER"] [主机名 "example.com"] [uri "/"] [unique_id "T4F5@H8AAQEAAFU6aPEAAAAL"]
ModSecurity:访问被拒绝,代码为 400(第 2 阶段)。需要匹配“rx ^OPTIONS$”与“REQUEST_METHOD”。[文件“/etc/apache2/conf.d/modsecurity/optional_rules/modsecurity_crs_21_protocol_anomalies.conf”] [行“41”] [id“960015”] [msg“请求缺少接受头”] [严重性“
为什么需要这个标题?我知道“大多数”客户发送这些,但为什么他们的缺席被视为安全威胁?
我们在 Windows Server 2012 上有这个 Apache:
Server version: Apache/2.4.9 (Win32)
Apache Lounge VC10 Server built: Mar 17 2014 10:48:43
大多数情况下,它运行良好,但有时(随机,每周 cca 3-4 次),它停止在端口 443 上提供 HTTPS,但继续在端口 80 上提供 HTTP。当它停止提供 HTTPS 时,解决问题的唯一方法是重新启动 Apache。
这似乎与这里的问题完全相同:Apache 停止响应 http 请求——https 继续工作,除了在我们的例子中是 HTTPS 停止工作,而 HTTP 是一直工作的那个。
我们启用了 trace6 级别的详细信息,以获取有关正在发生的事情的一些好的信息。但是,日志是空的:
...
[Sat Mar 21 07:51:50.577373 2015] [ssl:debug] [pid 3356:tid 2540] ssl_engine_io.c(999): [client ...:16529] AH02001: Connection closed to child 137 with standard shutdown (server ...:443)
[Sat Mar 21 07:54:21.936742 2015] [ssl:info] [pid 4760:tid 432] AH01914: …Run Code Online (Sandbox Code Playgroud) 我试图解决奇怪的问题 - wget 获取文件,将其保存到磁盘并挂起。以下是详细信息:
wget --server-response --ca-directory=/etc/ssl/certs --no-dns-cache -T 1 --read-timeout=1 --header="Connection: close" https://api.vk.com/method/users.get?uids=1&fields=first_name,last_name,photo,photo_big
Run Code Online (Sandbox Code Playgroud)
详细日志:
Setting --server-response (serverresponse) to 1
Setting --ca-directory (cadirectory) to /etc/ssl/certs
Setting --dns-cache (dnscache) to 0
Setting --timeout (timeout) to 1
Setting --read-timeout (readtimeout) to 1
Setting --header (header) to Connection: close
DEBUG output created by Wget 1.11.4 on linux-gnu.
--2015-05-06 10:44:04-- https://api.vk.com/method/users.get?uids=1
Resolving api.vk.com... 87.240.131.117, 87.240.131.118, 87.240.131.119, ...
Connecting to api.vk.com|87.240.131.117|:443... connected.
Created socket 3.
Releasing 0x0000000001b6d5e0 (new refcount 0).
Deleting unused 0x0000000001b6d5e0.
Initiating SSL …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个 YUM 存储库,其中包含我们每晚 Jenkins 构建的一些 RPM 包。
YUM 存储库位于 Jenkins 服务器的存储库文件夹中[path to repo]/jenkins-nightly-build/[release name]-repo。在所有作业完成后,它们被放置在 repo 中。最后,更新存储库元数据。
但是,当我尝试更新另一台机器时,存储库以
[Errno 14] HTTP Error 403 - Forbidden.
这是驻留在客户端计算机上的 .repo 文件:
[jenkins-nightly]
name=jenkins-nightly
baseurl=http://[hostname]/jenkins-nightly-build/[release name]-repo
gpgcheck=0
enabled=1
Run Code Online (Sandbox Code Playgroud)
如您所见,.repo 文件非常简单。我已经尝试过yum clean all,并且yum repolist确实打印了适当的 repo。打印所有预期的包,并在yum update调用时尝试下载。由于某种原因,客户端没有任何访问权限。
我需要编辑其他一些配置文件吗?为 Jenkins 安装的 Apache 会干扰 YUM 存储库吗?请帮忙!!!如果需要更多信息,请告诉我。
我有一个文件夹中的备忘录集合 一个/memos/items/备忘录用于包含 HTML 标题部分的 SSI 包含语句,直到并包括开头<body>,然后是备忘录内容的 HTML 代码,最后是进一步的 SSI 包括包含关闭 HTML 文档的代码的页脚的语句,如下所示:
<!--# include file="/memos/header.html" -->
Dies ist ein <i>Testeintrag</i>.
<blockquote>
Man soll den Tag
nicht vor dem Abend loben
</blockquote>
<!--# include file="/memos/footer.html" -->
Run Code Online (Sandbox Code Playgroud)
这很有效,但我不喜欢单项文件中的 SSI 语句。我更愿意指示 nginx 自动提供页眉和页脚,配置类似于
location ~ /memos/[\w-]+$ {
sendfile /memos/before.html;
sendfile $request_filename;
sendfile /memos/after.html;
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?是否有一个 nginx 模块提供了一个sendfile像描述的那样工作的指令?
优点是:
grep编辑文件夹。编辑 (2016/07/01)
同时,我通过简单地改变视角,找到了具有上述优点的 SSI 解决方案(即仅提供项目文件内容,没有 ssi 标签):而不是在每个单独的项目文件中包含页眉和页脚,我包括单个主模板中的项目文件。
受到nginx 站点上的提议的启发;我配置
location /memos/ {
ssi …Run Code Online (Sandbox Code Playgroud) 对于我的新服务器上的所有站点,似乎一旦nginx提供了一定数量的流量,它就会开始提供“错误 502 - 错误网关! ”。
让我们来看看一些日志和配置...
操作系统:Ubuntu 16.04(服务器)
硬件:6核,12GB内存
面板:ISPConfig
nginx 版本:1.10.3
来自/var/www/example/log/error.log:
11: Resource temporarily unavailable) while connecting to upstream, client: 216.170.123.179, server: example.com, request: "GET /KHFxygk9 HTTP/1.1", upstream: "fastcgi://unix:/var/lib/php7.0-fpm/web3.sock:", host: "example.com", referrer: "http://example.com/"
2017/08/10 06:01:06 [error] 15408#15408: *31372 connect() to unix:/var/lib/php7.0-fpm/web3.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 192.3.114.12, server: example.com, request: "GET /jiPNQjwp HTTP/1.1", upstream: "fastcgi://unix:/var/lib/php7.0-fpm/web3.sock:", host: "example.com", referrer: "http://example.com/"
Run Code Online (Sandbox Code Playgroud)
这是我的配置文件:
[www]
user = …Run Code Online (Sandbox Code Playgroud) 我希望 app.dotaquiz.org 可以使用我的网络服务 (185.156.179.139)。所以我已经注册了域名。我还创建了一个 A 记录 (app-A-185.156.179.139)。
对http://185.156.179.139/users/1 的GET 请求给出 OK-200。
对http://app.dotaquiz.org/users/1 的GET 请求给出 404。
我缺少什么?
HTTP 1.0 存在与会话劫持相关的安全弱点。有没有办法通过使用mod_rewrite模块来禁用它?
http ×10
linux ×2
nginx ×2
apache-2.2 ×1
apache-2.4 ×1
connection ×1
http-server ×1
https ×1
mod-security ×1
php-fpm ×1
php7 ×1
proxy ×1
redhat ×1
rpm ×1
wget ×1
yum ×1