在由包含通配符条目的 DNS 链接的 Apache2 服务器上,例如 *.example.com,在任何 VirtualHosts 中未定义为 ServerNames 的子域指向第一个定义的 VirtualHost,在我的示例中,这是 000-default。
我的问题:
如何获得未使用的子域(未在任何虚拟主机中使用的子域)以向请求客户端返回 404 错误?这也必须最好在服务器日志中显示为 404。
我研究了以下可能性:
这种方法的问题是,当有人以 this.company.sucks.example.com 链接到您的网站时,客户端将看到您的主页,或者在我的情况下,如果我不重定向,则会看到 000-default。感谢迈克指出这一点。(“吮吸”等的正则表达式绝对不是一种选择)
Apache 有点不喜欢这个,每次重新加载时都会发出警告。除了警告之外,一切似乎都很好。这似乎是一个黑客。对任何人来说,这似乎是一个问题(无论多么小)?
这令人困惑,并使以下内容变得过于复杂:例如,您为每个用户使用一个子域(显然,这是使用通配符 DNS 的一个重要原因),并且用户可以在 username.example 中查看彼此的配置文件。 com。这个解决方案让用户感到困惑,完全不是我想要做的。
我理想的解决方案会让用户知道在他输入的 url 上没有任何东西可以查看。最好带有 404 和输入地址的错误日志条目(不是其他地址)。
任何帮助将不胜感激!
wildcard subdomain virtualhost http-status-code-404 apache-2.2
我在 Windows Server 2003 上的 IIS 中遇到一个网站的奇怪问题。它上面有一个有效的通配符证书,但是当我在页面上使用 HTTPS 时,我发现 404 未找到。没有HTTPS,它显示得很好。此外,如果我使用 HTTP 访问站点的域根目录,主页会显示,但使用 HTTPS 会将我重定向到安装在同一 IIS 服务器上的完全不同的网站。我很困惑。我尝试给每个站点一个唯一的 IP 地址,但它没有改变任何东西,我也尝试更改 SSL 端口,但不走运。这个 IIS 也被设置为运行 PHP。我可以检查什么来解决这个问题?
我发现的一切似乎都与创建自定义 404 页面有关。
这不是我想要做的。
如果我想阻止对页面的访问,我可以在 htaccess 中执行此操作:
重写规则模式- [F]
但是,“ Forbidden ”暗示该页面确实存在。我希望页面看起来甚至不存在。所以我想给出一个 404 错误而不是 403。然后让它渲染任何 404 页面,如果资源真的不存在。
我怎样才能做到这一点?
我最近安装的 logwatch 报告显示了这个:
--------------------- httpd Begin ------------------------
0.78 MB transferred in 5864 responses (1xx 0, 2xx 4900, 3xx 0, 4xx 964, 5xx 0)
160 Images (0.16 MB),
857 Content pages (0.62 MB),
4847 Other (0.00 MB)
Requests with error response codes
404 Not Found
/%E2%80%98planeat%E2%80%99-film-explores-l ... greenfudge-org/: 1 Time(s)
/10-foods-to-add-to-the-brain-diet-to-help ... -function/feed/: 1 Time(s)
/10-ways-to-reboot-your-body-with-healthy- ... s-and-exercise/: 1 Time(s)
/bachmann-holds-her-ground-against-raising ... com-blogs/feed/: 1 Time(s)
/behind-conan-the-barbarians-diet/: 1 Time(s)
/tag/dietitian/: 1 Time(s)
/tag/diets/page/10/: 1 Time(s)
/tag/directory-products/feed/: 1 Time(s)
/wp-content/uploads/2011/06/1309268736-49.jpg: 1 Time(s)
/wp-content/uploads/2011/06/1309271430-30.jpg: …Run Code Online (Sandbox Code Playgroud) 我正在尝试按如下方式设置 nginx 配置:当收到如下请求时/tile/SteveCountryVic/1/2/3.png:
http://localhost:5005/1/2/3.png/tile/SteveCountryVic/1/2/3.png这是我的配置,它不太工作:
server {
listen 80;
server_name localhost; error_log /tmp/nginx.error.log notice;
access_log /tmp/nginx.access.log;
location /tile/SteveCountryVic/ {
rewrite_log on;
#rewrite ^.*/(\d+)/(\d+)/(\d+).*$ /$1/$2/$3.png break;
proxy_intercept_errors on;
error_page 404 = @dynamiccycletour;
#proxy_set_header Host $http_host;
#proxy_pass http://127.0.0.1:5005;
proxy_redirect /tile/SteveCountryVic/ http://localhost:5005/;
location @dynamiccycletour {
rewrite_log on;
#rewrite ^(\d+)/(\d+)/(\d+).*$ /tile/SteveCountryVic/$1/$2/$3.png break;
proxy_pass http://115.x.x.x:20008;
}
location /tile/ {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:20008;
proxy_cache my-cache;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
}
...
Run Code Online (Sandbox Code Playgroud)
在此配置中,所有请求似乎都被重定向到代理服务器,但最终会提供图像。此外,错误日志包含以下几行:
2013/09/10 09:44:11 [error] …Run Code Online (Sandbox Code Playgroud) 这是我的 php-fpm 配置:
location @site {
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_intercept_errors on;
error_page 404 /404;
}
Run Code Online (Sandbox Code Playgroud)
因为fastcgi_intercept_errors已启用,当我的 PHP 路由器返回 404 时,Nginx 将重定向到/404. 好。
但是由于/404是由我的PHP应用程序生成的,并且我的PHP应用程序正确设置了404响应代码,那么Nginx会再次尝试处理错误!(显然以循环结束)
这个问题有方法解决吗?
我最近将 CentOS 7 机器上的 Web 服务器从 Apache 切换到 nginx。我使用软件在我的电脑上截取屏幕截图并将它们上传到服务器以供公众查看。最初,它在 Apache 上运行良好 - 但是,现在我遇到了一个问题,即 nginx 将为 Web 服务器上的某些 .png 图像提供 404 错误。
我用一个非常相似的问题提到了这个问题,但在我自己的问题的背景下,我无法理解解决方案。
我有下面图像服务器的服务器块的片段。
server {
listen 80;
server_name imageserver.example.com;
root /usr/share/nginx/imageserver.example.com/public_html;
access_log imageserver.example.com/logs/imageserver.example.com_access.log;
error_log imageserver.example.com/logs/imageserver.example.com_error.log crit;
location / {
index index.html index.htm;
}
location ~* \.png {
root imageserver.example.com/public_html/u/;
expires max;
add_header Pragma public;
add_header Cache-control "public, must revalidate, proxy-revalidate";
}
}
Run Code Online (Sandbox Code Playgroud)
示例链接是此图像。我已确认该文件存在于服务器上,并且具有以下权限。
$ lsa 7b724394b851299c68b15f1172f158c6.png
-rw-rw-r--. 1 jflory nginx 2.4K Nov 3 11:13 7b724394b851299c68b15f1172f158c6.png
我对如何解决这个问题感到非常困惑。可能是什么问题?
我一直在为我工作的公司建立一个私人回购。一开始它工作正常,但是今天,当我尝试安装我构建的新 rpm 时,我遇到了这个丑陋的错误:
http://<server_name>/centos/7/repodata/a6ecd0c880b1f5128974cd147a53cd84d7dab269b9055215b6fbe99fb98f6d7a-primary.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found-:-- ETA
Run Code Online (Sandbox Code Playgroud)
我已经试过了:
yum clean all
rm -rf /var/cahe/yum
yum repolist
Run Code Online (Sandbox Code Playgroud)
又是同样的错误。
我已经删除了 repo 服务器上 repodata 下的所有内容,并再次使用以下命令重新创建了 repo:
createrepo /path/to/repo/directory
Run Code Online (Sandbox Code Playgroud)
重新创建 repo 后,我又跑了
yum clean all
rm -rf /var/cahe/yum
yum repolist
Run Code Online (Sandbox Code Playgroud)
但仍然没有任何作用
我 100% 确定客户端配置没问题,因为我是目前唯一一个使用服务器的人,上周它运行良好。
否则,可以在 http 中访问 repo,我可以使用 Web 浏览器查看所有包和 repodata。如果一个执行
curl http://<server_name>/centos/7/repodata/repomd.xml
Run Code Online (Sandbox Code Playgroud)
从客户端,我得到了正确的文件。
我已经意识到主数据库名称的名称在客户端中不是正确的(即使在运行之后yum clean all; rm-rf /var/cache/yum; yum update)。我该如何解决这个问题?我整个下午都在研究这个问题,但没有任何改变
存储库目录中的权限设置正常(三重检查)
我错过了什么???
预先感谢您的帮助
我在 active-domain.com 注册了一个域,昨天我将我的域名服务器更改为我的主机,但后来我决定在最后一刻切换我的主机并再次更改它们。现在,大约 24 小时后,该站点仍然会偶尔拉起旧主机上的站点。如果我清除缓存和flushdns,它通常会自行解决。它也发生在我网站的其他访问者身上。有什么建议?
该网站是:http : //comegetheated.com
我试图让 403 响应与 404 响应完全相同。
不确定是否有正确的方法,但设置
error_page 403 404
是我当前的方法。
mysite.com/404这是有效的,但它会重写403 的url
,而常规 404 则保留该 url。
哦,我没有设置任何 4XX 自定义页面,并且我删除了默认的 nginx 页面。