ApacheDirectory指令是否应该与 DocumentRoot 相关?我在 VirtualHost 的上下文中询问,但它应该没有任何区别。
换句话说,它应该是:
<VirtualHost>
DocumentRoot /var/www
<Directory /var/www>
...
Run Code Online (Sandbox Code Playgroud)
或者
<VirtualHost>
DocumentRoot /var/www
<Directory />
...
Run Code Online (Sandbox Code Playgroud)
两者都有效。在Apache的目录文档说:
Directory-path 要么是目录的完整路径,要么是通配符字符串...
...但随后他们展示了两个与“完整路径”声明相矛盾的例子。
ED:Apache Performance Tuning 页面上的FollowSymLinks 和 SymLinksIfOwnerMatch以及AllowOverride部分也有相互矛盾的例子。
为了好玩,我查看了 Debian 的默认 vhost 设置,发现了这个:
<VirtualHost *:80>
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
...
Run Code Online (Sandbox Code Playgroud) 我希望标题很清楚。
如何防止对未启用 ssl 的虚拟主机的 HTTPS 请求转到第一个启用 ssl 的虚拟主机(设置为 Apache-SNI)。
例如,使用我下面的缩写配置,https://example.comApache 在启用了 ssl 的 vhost 上处理对(非 ssl vhost)的请求https://example.org。我想禁用该行为并可能使用适当的 HTTP 响应代码进行回复(不确定那是什么)。
它甚至可能不可能,但我想我会问。
# I actually have a SNI setup, but it's not demonstrated here.
# I don't think it's relevant in this situation.
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerName example.org
</VirtualHost>
<VirtualHost *:443>
ServerName example.org
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
编辑:也许是第一个 ssl-vhost 中的 mod_rewrite 规则?
当我取消设置Last-Modified在Apache的头(ETags也被禁止),火狐(4.01),将不缓存任何文件,无论我是否设定一个未来的Expires页眉或启用Cache-Control头。
那么浏览器缓存需要Last-Modified(和/或ETag)标头吗?
从这里:
如果响应中没有验证器(ETag 或 Last-Modified 标头),并且它没有任何明确的新鲜度信息,它将被视为不可缓存。
...好吧,如果“新鲜度信息”是指“Cache-Control”或“Expires”标头,那么 Firefox 应该在没有 Last-Modified 标头的情况下进行缓存。
编辑更多 Firefox 信息
请注意,在 Firefox 4.01 中由 Apache 2.2 提供的任何 PHP 文件上生成 304 的任何尝试都不会成功(重新加载、重新访问等)而没有Last-Modified标头,无论设置了有效缓存Cache-Control标头、Expires标头或两者的任何组合标题。
foo.php:这个文件的内容只是简单地回应“Hello World”。
HTTP/1.1 200 OK
Date: Mon, 06 Jun 2011 14:04:58 GMT
Server: Apache
Cache-Control: public, max-age=3600
Expires: Fri, 01 Jul 2011 21:23:55 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 1594
Keep-Alive: …Run Code Online (Sandbox Code Playgroud) 如何阻止 Postfix 接受来自外部世界的本地用户@my-FQDN 的邮件?
$ hostname -f
hostname.example.com
Run Code Online (Sandbox Code Playgroud)
Postfix 正在接受发送到 my-FQDN 的任何本地用户的邮件。因此,我们将使用root@hostname.example.com我想停止接收来自外部世界的邮件的本地用户作为示例。
我有一个非常基本的 Postfix/Dovecot/SASL/LDA 设置,但让我分享一些细节。
我试过在/etc/aliasesPostfix 和 Postfix 中反转用户virtual_alias_maps.cf,但没有运气。我在更新它们后运行了newaliases和postmap。
#/etc/aliases:
#root: user@example.com
#/etc/postfix/virtual_alias_maps.cf:
root user@example.com
Run Code Online (Sandbox Code Playgroud)
我想我还剩下四个*(更新的)选择......
mydestination. 我很确定我需要在这里保留我的 FQDN,所以我认为删除它不是一个好的选择。编辑:是的,虽然从mydestination 中删除您的 FQDN会禁止外部世界向本地用户发送邮件,但这不是禁用它的正确方法,因为这会导致其他事情。smtpd_recipient_restrictions禁用此功能的设置?我在文档中找不到一个。这是我的 Postfix main.cf的相关部分:
myhostname = hostname.example.com
mydomain = example.com
mydestination = $myhostname, localhost.$mydomain, localhost …Run Code Online (Sandbox Code Playgroud) 如何从 /var/log/syslog (rsyslog.conf/Debian) 过滤 mail.info,同时保留大于或等于 mail.warn 的消息?
我已经尝试了附加和前置不同组合的几乎所有不同变体mail, mail.info, mail.!info, mail.*, mail.warn, mail.!warn,但显然文档比我更聪明。
目前我正在这样做,但可惜的是,她不行:
*.*;auth,authpriv.none;mail.warn,mail.!info -/var/log/syslog
Run Code Online (Sandbox Code Playgroud)
编辑:我很难理解分号分隔符以及它如何“限制”以前的条目。
我进行了大量搜索,但似乎关于别名 IP 地址的正确网络掩码应该是什么的信息存在冲突。一些相互矛盾的信息似乎是 FreeBSD 特有的。我正在寻找“技术上最合适”的答案,如果有的话。
我被分配了 xxx168/29。
这是eth0:
address x.x.x.170
netmask 255.255.255.248
gateway x.x.x.169
Run Code Online (Sandbox Code Playgroud)
所以正确的eth0:0网络掩码应该是255.255.255.something.
编辑:根据 Chris S 的评论,我没有使用 FreeBSD;我正在使用 Debian。我的理解是 FreeBSD 用户应该使用 .255 作为别名。但我可能是错的,所以你应该做你自己的研究。
我有点怀疑我的新邮件服务器可能没有正确配置,我想知道我是否在某个地方犯了错误。或者也许这只是雅虎用他们的邮件服务做事的方式。
从我的邮件服务器到 Yahoo 邮件:
Received: from 127.0.0.1 (EHLO hostname.example.com) (x.x.x.x)
by mta1199.mail.gq1.yahoo.com with SMTP; Tue, 09 Jul 2013 13:53:55 -0700
Received: from me.atwork (c-x-x-x-x.comcast.net [x.x.x.x])
by hostname.example.com (Postfix) with ESMTPSA id 66DB11B006B4
for <example@yahoo.com>; Tue, 9 Jul 2013 16:53:54 -0400 (EDT)
Run Code Online (Sandbox Code Playgroud)
雅虎测试的第一行让我感到困惑。为什么 Yahoo 不像下面的 gmail 那样知道我的服务器名称?它似乎认为它是 127.0.0.1。那是因为雅虎没有在 DNS 中查找我吗?
收到:来自 127.0.0.1...
我的 gmail 测试是正确的。
从 gmail 到我的邮件服务器:
Received: from hostname.example.com (hostname.example.com. [x.x.x.x])
by mx.google.com with ESMTP id n7si14797309oep.56.2013.07.09.13.55.25
for <example@gmail.com>;
Tue, 09 Jul 2013 13:55:25 -0700 (PDT)
Received: from me.atwork …Run Code Online (Sandbox Code Playgroud) 我刚刚在我的系统日志中注意到这个奇怪的警告:
postfix/smtpd[26261]: warning: hostname localhost does not resolve to
address 113.167.250.138
Run Code Online (Sandbox Code Playgroud)
...然后紧随其后的是:
postfix/smtpd[26261]: connect from unknown[113.167.250.138]
postfix/smtpd[26261]: NOQUEUE: reject: RCPT from unknown[113.167.250.138]:
550 5.1.1 <advertising@crestore.com>: Recipient address rejected: User
unknown; from=<bseatz@somedomain.example.com>
to=<advertising@mydomain.example.com> proto=ESMTP helo=<localhost>
postfix/smtpd[26261]: disconnect from unknown[113.167.250.138]
Run Code Online (Sandbox Code Playgroud)
所以我决定从不同的 win 机器做一个 traceroute,并将远程 IP 解析为机器的 HOSTNAME:
> tracert 113.167.250.138
Tracing route to MYHOSTNAME [113.167.250.138] over a maximum of 30 hops:
1 MYHOSTNAME [113.167.250.138]
2 [2-5 removed]
6 ix-8-0-3-0.tcore1.CT8-Chicago.as6453.net [x.x.x.x]
7 if-22-2.tcore2.CT8-Chicago.as6453.net [x.x.x.x]
8 if-11-3.tcore2.PDI-PaloAlto.as6453.net [x.x.x.x]
9 if-22-2.tcore2.LVW-LosAngeles.as6453.net [x.x.x.x]
10 if-10-0-0-5.mcore5.LAA-LosAngeles.as6453.net [x.x.x.x] …Run Code Online (Sandbox Code Playgroud) 关于 DNS 记录,我如何设置一个域,在 1.1.1.1 上www.example.com有 HTTP www,www在 2.2.2.2上有 HTTPS ?
为清楚起见:
目前我有:
@ IN A 1.1.1.1
www IN A 1.1.1.1
Run Code Online (Sandbox Code Playgroud)
我目前对 DNS 记录的(平均)知识表明我无法以这种方式设置它。相反,我必须为类似secure IN A 2.2.2.2.
注意:不幸的是,在 1.1.1.1 上设置 HTTPS www.example.com 不是一个选项。
ip ×3
apache-2.2 ×2
a-record ×1
alias ×1
directory ×1
email ×1
http-headers ×1
netmask ×1
postfix ×1
rsyslog ×1
smtp-headers ×1
sni ×1
ssl ×1
syslog ×1
virtualhost ×1