小编Dis*_*oat的帖子

在 Apache VirtualHost 中重定向 URL?

我有一个带有 Apache 的专用服务器,我在上面设置了一些 VirtualHosts。我已经设置了一个来处理 www 域以及非 www 域。

我的 www 的 VH .conf 文件:

<VirtualHost *>
  DocumentRoot /var/www/site
  ServerName www.example.com
  <Directory "/var/www/site">
    allow from all
  </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

有了这个.htaccess

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以将 www 重定向到非 www 版本?目前我将两个版本发送到同一个DocumentRoot并使用,.htaccess但我确定我必须能够在 VirtualHost 文件中做到这一点。

mod-rewrite redirect virtualhost apache-2.2

65
推荐指数
2
解决办法
25万
查看次数

Webmin 和/或端口 10000 不工作

我最近在 Ubuntu 服务器上安装了Webmin,但我无法让它工作。我最近问了一个关于保存 iptables 的问题,但事实证明您不需要“保存”iptables 更改。

无论如何,打开端口后我仍然无法让Webmin工作:

iptables -A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

似乎是该命令没有打开端口 10000,或者 Webmin 存在单独的问题。如果我运行,iptables -L我会看到如下所示的行,但没有端口 10000:

ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:5555 state NEW
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:8002 state NEW
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:9001 state NEW
Run Code Online (Sandbox Code Playgroud)

但是,有一行:

ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:webmin
Run Code Online (Sandbox Code Playgroud)

为什么 Webmin 不起作用的任何想法?IP地址工作正常,我们可以在服务器上查看网站,但https://[ip]:10000/(或http)不起作用。

ubuntu port

8
推荐指数
1
解决办法
6万
查看次数

如何重置 Apache 的 RewriteCond 指令?

我有一些这样的 Apache 配置:

# Image hotlinking rule
RewriteCond %{HTTP_REFERER} ^http://badsite\.com/
RewriteRule .*/static/artwork/.*\.(jpg|png)$ /static/images/hotlink.png [L]

# Redirects
RewriteRule ^static/artwork/(.+)$    http://cdn.mysite.com/artwork/$1    [L,R=301]

# CodeIgniter
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)

它应该执行以下操作:

  1. 如果对图像的请求来自badsite.com,则阻止它并显示热链接图像。
  2. 如果收到对图像的常规请求,则重定向到托管在 cdn 子域上的图像。
  3. 否则,如果请求不是文件或目录,则加载网页页面(通过 CodeIgniter)。

但是,我认为第一个RewriteCond适用于重定向规则,而不是盗链规则,因为来自该引用者的图像请求被重定向到 CDN,而不是盗链图像。Apache 文档中的一个示例(本节底部)暗示换行符停止RewriteCond应用,但这并没有发生。

有没有办法“重置”RewriteCond规则,或者我的配置中是否有其他错误?

mod-rewrite rewritecond apache-2.2

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

如何保存 iptables 配置?

我刚刚在 Ubuntu 服务器上安装了 Webmin。根据文档,您需要打开端口 10000(Webmin 运行的端口),如下:

iptables -A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

然后它说你需要应用防火墙配置:

/etc/init.d/iptables restart
Run Code Online (Sandbox Code Playgroud)

但是,这个命令对我不起作用。是否有不同的命令可以保存 Ubuntu 上的更改?

linux ubuntu iptables port

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

跳过站点某些区域的 nginx PHP 缓存?

我刚刚用 nginx(我是新手)和 PHP 设置了一个新服务器。在我的网站上,基本上有 3 种不同类型的文件:

  • 静态内容,如 CSS、JS 和一些图像(大多数图像在外部 CDN 上)
  • 主要的 PHP/MySQL 数据库驱动网站,本质上就像一个静态网站
  • 动态 PHP/MySQL 论坛

我从这个问题这个页面了解到,静态文件不需要特殊处理,会尽快提供。

我按照上述问题的答案为 PHP 文件设置缓存,现在我有一个这样的配置:

location ~ \.php$ {
    try_files $uri =404;

    fastcgi_cache one;
    fastcgi_cache_key $scheme$host$request_uri;
    fastcgi_cache_valid  200 302 304 30m;
    fastcgi_cache_valid  301 1h;

    include /etc/nginx/fastcgi_params;
    fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /srv/www/example$fastcgi_script_name;
    fastcgi_param HTTPS off;
}
Run Code Online (Sandbox Code Playgroud)

但是,现在我想防止在论坛上缓存(无论是针对所有人还是仅针对登录用户 - 还没有检查后者是否适用于论坛软件)。我听说位置块内有“如果是邪恶的”,所以我不确定如何继续。使用位置块内的 if 我可能会在中间添加它:

if ($request_uri ~* "^/forum/") {
    fastcgi_cache_bypass 1;
}
# or possible this, if I'm able to cache pages …
Run Code Online (Sandbox Code Playgroud)

php nginx cache

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