标签: apache2

在生产服务器上调试卡住的 apache/php 线程

我有一个带有 apache httpd 和 PHP 的 linux 系统,它使用LoadModule php5_module /usr/lib/apache2/modules/libphp5.so.

我已经启用了 apache 的 mod_status 模块,我看到一个特定的线程从昨天开始就一直在做某事。我还通过ps -axu | grep apache在许多线程中执行哪个给我特定的卡住线程来确认这一点:

www-data  5636  0.0  0.1 423556 23560 ?      S    XXXXX   0:04 /usr/sbin/apache2 -k start
Run Code Online (Sandbox Code Playgroud)

请注意,XXXXX 类似于昨天的 Jan02。此外,pid (5636) 与我在 apache 的 mod_status 页面中看到的卡住线程的 pid 相匹配。

我的问题是:我怎样才能做一个线程转储或类似的事情来查看这个东西在 PHP 代码中的确切位置?也许它正在等待某些东西(I/O、网络、数据库),但我不知道是什么。

在 Java 世界中,我会做一个kill -3 pid很好的可读线程转储,它会清楚地向我展示该特定线程的确切位置。php土地有类似的技术吗?

php troubleshooting threads dump apache2

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

警告:/usr/lib/postfix/smtpd:命令启动错误——节流

今天我从这里设置了一个带有德语教程的邮件服务器:

现在我已经完成了,需要帮助解决我的问题。Sry 英语不好 - 我希望我的信息能帮助你帮助我 ^^

邮件日志:

11 月 18 日 16:30:00 srv01 postfix/smtpd[23275]:从 localhost[::1] 连接
11 月 18 日 16:30:00 srv01 postfix/smtpd[23275]:警告:SASL:连接到私有/auth_dovecot 失败:没有这样的文件或目录
11 月 18 日 16:30:00 srv01 postfix/smtpd[23275]:致命:没有 SASL 身份验证机制
11 月 18 日 16:30:01 srv01 postfix/master[15201]:警告:进程 /usr/lib/postfix/smtpd pid 23275 退出状态 1
11 月 18 日 16:30:01 srv01 postfix/master[15201]:警告:/usr/lib/postfix/smtpd:命令启动错误——节流

邮件错误:

11 月 18 日 16:30:00 srv01 postfix/smtpd[23275]:致命:没有 SASL 身份验证机制
11 月 18 日 16:39:07 srv01 postfix/postmap[23556]:致命:打开 /etc/postfix/smtp_auth:没有那个文件或目录

postconf -n:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = …

postfix dovecot sasl apache2

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

Apache - 允许在未经身份验证的情况下访问全局别名目录

我有一个虚拟主机,它配置了一些访问限制,如下所示:

<Location "/">
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /var/www/domain/htdocs/.htpasswd
    Require valid-user
</Location>
Run Code Online (Sandbox Code Playgroud)

除此之外,我还有以下conf文件:

Alias /.well-known/acme-challenge/ "/var/www/letsencrypt/"

<Location /.well-known/acme-challenge/>
    # Security Options
    Options None
    AllowOverride None
    ForceType text/plain
    RedirectMatch 404 "^(?!/\.well-known/acme-challenge/[\w-]{43}$)"

    # Do not redirect to https or perform other rewrites
    RewriteEngine off

</Location>
Run Code Online (Sandbox Code Playgroud)

我需要/.well-known/acme-challenge/无需授权即可访问。

我已经尝试Require all granted向我的conf文件添加不同的变体,但无济于事。

如何让/.well-known/acme-challenge/所有虚拟主机无需身份验证即可访问?(我不想修改任何虚拟主机,这个虚拟主机只是一个例子)。

apache-2.4 apache2

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

默认的 Apache 构建是否没有 PIE(位置无关可执行文件)?

我只是从源代码构建 Apache,而不是我通常做的事情,并注意到构建选项之一是:

--enable-pie
Run Code Online (Sandbox Code Playgroud)

这将 httpd 构建为与位置无关的可执行文件,据我所知,它可以防止 ROP 漏洞利用。我原以为这是默认构建,但通常当您在构建过程中看到“--enable”选项时,这意味着默认情况下未启用该选项。这样对吗?Apache2 的默认构建中未启用 PIE?

security apache2

5
推荐指数
0
解决办法
128
查看次数

为子域启用跨源

我有 2 个子域,av.xyz.example并且video.xyz.example. 我想为video.xyz.exampleon启用 CORS av.xyz.example

我在apache配置文件中添加了以下代码片段av.xyz.com

Header set Access-Control-Allow-Origin "video.xyz.example"`
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误

“Access-Control-Allow-Origin”标头包含无效值“video.xyz.example”。因此,不允许访问来源“ https://video.xyz.example ”。

我尝试使用它来执行此操作*,但仍然收到错误,表示不允许使用通配符,尝试使用 - 执行此操作,^(.*\.xyz\.example)$但仍然收到错误,无效值。

在我的场景中正确的值应该是多少?

.htaccess apache2

5
推荐指数
2
解决办法
3万
查看次数

在 Fail2Ban 中检测 DoS 和 DDoS 的好方法是什么?

我正在 Ubuntu Web 服务器上配置 Fail2Ban,以防止它成为 DoS / DDoS 的受害者。我不想使用 Cloudflare,因为我必须路由我的 DNS 并使用他们的 SSL 证书。

HEAD目前,我在网上找到了一个脚本,可以检查每秒是否有超过 1 个 HTTP请求,或者xmlrpc.php每秒是否有超过 1 个请求。我认为这不足以提供足够的保护,因为这些并不是人们可以用来执行 DDoS 攻击的唯一请求类型。

GET我正在考虑限制给定IPPOST在短时间内可以发出的请求数量,但我不确定应该如何设置限制,因为加载大量 Javascript、CSS 或图像的大页面会导致GET短时间内收到大量请求。我应该考虑限制GET/POST请求,还是应该考虑其他事情?为什么?

ubuntu denial-of-service ddos fail2ban apache2

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

Apache2 mod_substitute 无法在 &lt;Location&gt; 中工作

我有一个正在工作的反向代理,它仅在我的站点中的特定位置上处于活动状态,在本例中例如:www.example.com/reverseproxy/site1我正在反向代理 site1。我想替换每个代理页面正文的某些部分,所以我尝试使用 mod_substitute,问题是我无法让它在<Location /reverseproxy>

这是我的 httpd(启用了 SSL):

<VirtualHost _default_:443> 

    ProxyPassInterpolateEnv On
    RewriteEngine On

    ... Some rewrite rules
    RewriteRule /?reverseproxy/http(s*):/([^\/]*)/*(.*) "http$1://$2/$3" [P]
    SSLProxyEngine On
    ProxyPassReverse "/reverseproxy/http${ssl}://${page}" http${ssl}://${page} interpolate

    SetOutputFilter INFLATE;proxy-html;SUBSTITUTE;DEFLATE;
    ProxyHTMLInterp On
    ProxyHTMLExtended Off

    ...Some ProxyURLMap
    AddOutputFilterByType SUBSTITUTE text/html
    Substitute "s|<body>|<body1>|"
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这个替代品确实有效,但它适用于所有页面,而不仅仅是/reverseproxy. 当我尝试将其放入时,<Location /reverseproxy>它不起作用,它只是忽略它:

<Location /reverseproxy>
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|<body>|<body1>|"
</Location>
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

我尝试添加

 RequestHeader unset Accept-Encoding
Run Code Online (Sandbox Code Playgroud)

在标签之外<Location>但它不起作用

我尝试添加这个

SetOutputFilter SUBSTITUTE;DEFLATE
Run Code Online (Sandbox Code Playgroud)

<Location /reverseproxy>标签中但没有运气

正如有人建议尝试使用这个过滤器链

FilterDeclare filter
FilterProvider filter SUBSTITUTE …
Run Code Online (Sandbox Code Playgroud)

mod-rewrite reverse-proxy mod-proxy apache-2.4 apache2

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

如何转发来自我的 Web 服务器的请求?

这是一个关于反向代理、它们如何工作以及如何配置的规范问题

如何处理来自不同端口上的服务或来自具有相同网络服务器的不同服务器的请求并通过 URL 区分它?

nginx reverse-proxy apache2

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

使用 cifs 共享时 apache2 发送损坏的响应

我的 ubuntu 实例 (Ubuntu 20.04.1 LTS) 和 apache2 (Apache/2.4.41 (Ubuntu)) 遇到问题。一台虚拟主机正在从已安装的 cifs 共享中提供一些 html 文件和文档。cifs 共享工作正常,文件系统上的文件正确。

然而,apache 无法为以二进制形式提供的每种文件类型(如图像、word 文档、pdf 等)生成正确的响应。例如,当我下载图像时,image.gif文件会被下载并保存到客户端。当在客户端上使用文本编辑器打开文件时,它看起来如下:

grade, Keep-Alive
Last-Modified: Thu, 12 Nov 2020 10:01:47 GMT
ETag: "b6b-5b3e600040144"
Accept-Ranges: bytes
Content-Length: 2923
Keep-Alive: timeout=5, max=100
Content-Type: image/gif

GIF89av[binary-string starting...]
Run Code Online (Sandbox Code Playgroud)

因此,部分响应标头现在位于下载的文件中,这种情况永远不应该发生。我期待下载的文件以GIF89av等等开头。提供基于文本的文件(如 html)不是问题并且可以按预期工作。但是,当我将同一文件复制到同一服务器上另一个虚拟主机的文档根目录(该服务器不使用已安装的 cifs 共享)时,该文件将正确提供(其中没有响应标头)。所以我认为,安装的 cifs-share 和 apache2 的组合存在一些问题,从而导致了该错误。

我已经尝试了有关共享挂载的各种选项 - 但我认为这是正确的,因为这些文件直接在没有 apache 的文件系统上工作。

共享挂载/etc/fstab如下

//192.168.0.1/share$ /mnt/share cifs username=user,password=pass,dom=contoso.local 0 0
Run Code Online (Sandbox Code Playgroud)

这几乎是最基本的方法。我经历过类似的选项iocharset=utf8,尝试了不同的版本(vers=1.0vers=3.1),但这并没有改变任何东西。apache 配置也是基本配置,随 ubunutu 20 一起提供,没有任何特殊添加或更改。我对 mime …

cifs apache2

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

我可以在同一台服务器上使用 apache2 和 memcache 吗?

我对服务器开发真的很陌生。我有一个Server version: Apache/2.4.41 (Ubuntu)用于 Django的服务器 ( ),它在 apache2 上运行。我想将 Memcache 用于大型查询集。我只想使用以下 Django 未来:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache',
        'LOCATION': '127.0.0.1:11211',
    }
}
Run Code Online (Sandbox Code Playgroud)

据我了解文档,我必须安装 Memcached、配置并从systemctl. 正如我之前提到的,我在 systemctl 上有一个 apache2 服务器。如果我用 安装 Memcached sudo apt install memcached,会不会有问题?

我真的很害怕在服务器上安装一些东西,因为我们有将近 20 个项目在 apache2 上运行,我不想破坏它。过去我尝试同时使用 apache2 和 nginx,它导致了大问题。

我应该遵循哪种方式来使用 memcached?。我必须购买新服务器吗?

linux ubuntu memcached apache2

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