标签: apache2

使用Apache的VPS上的多个域

我计划尽快获得一个VPS并且有两个我想要托管的网站.我使用主机文件为我的开发环境设置了本地vhosts设置以正确移植它.

我的问题很简单:当设置两个单独的域指向一个VPS服务器时,Apache是​​否足够智能,就像在本地环境中一样,自动过滤任何对domain.com的请求到正确的VHOST,就像在本地一样?我想确定:)

谢谢!

我要问的例子:

说Domain1.com和Domain2.com都在我的VPS上.

当有人请求www.Domain1.com时,apache会看到并将其传递给domain1.com vhost文件.当有人请求www.Domain2.com时,apache会看到并将其传递给domain2.com vhost文件.

apache2 vps vhosts

10
推荐指数
2
解决办法
6865
查看次数

apache代理模块给出403禁止错误

我正在尝试使用apache的代理模块在ubuntu桌面上使用xmpp.为此,我做了以下事情 -

1)通过在mods-enabled目录中的/ etc/apache2/mods-available /创建proxy.conf,proxy.load和proxy_http.load的符号链接来启用mod_proxy.

2)在vhost中添加以下行

    <Proxy http://mydomain.com/httpbind>
     Order allow,deny
     Allow from all
   </Proxy>

   ProxyPass /httpbind http://mydomain.com:7070/http-bind/
   ProxyPassReverse /httpbind http://mydomain.com:7070/http-bind/
Run Code Online (Sandbox Code Playgroud)

我是新手使用代理模块,但我可以从上面的行中做出的是将请求http://mydomain.com/httpbind转发到http://mydomain.com:7070/http-bind/.如果错了,请更正.

3)Allow from .mydomain.com在/mods-available/proxy.conf中添加了规则

现在我尝试访问http://mydomain.com/httpbind它显示403 Forbidden错误..

我在这里失踪了什么?请帮忙.谢谢

编辑:当我在mods_available/proxy.conf中更改以下代码时问题得到解决

    <Proxy *>
            AddDefaultCharset off
            Order deny,allow
    Deny from all 
    Allow from mydomain.com                        
    </Proxy>
Run Code Online (Sandbox Code Playgroud)

    <Proxy *>
            AddDefaultCharset off
            Order deny,allow
    #Deny from all 
    Allow from all                         
    </Proxy>
Run Code Online (Sandbox Code Playgroud)

虽然没有得到初始代码的错误

xmpp apache2 mod-proxy

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

如何将WAR文件部署到Apache 2.2中

我的服务器是apache 2.2,它为php应用程序提供服务,现在我想将它配置为服务于J2EE应用程序.

我认为有一个Apache模块可以将WAR文件部署到其中,有人可以帮助我吗?

谢谢

apache2 java-ee

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

Apache2 for 401中的自定义错误页面

这是.htaccess文件的相关部分:

AuthUserFile  /var/www/mywebsite/.htpasswd
AuthGroupFile /dev/null
AuthName  protected
AuthType Basic
Require valid-user

ErrorDocument 400 /var/www/errors/index.html
ErrorDocument 401 /var/www/errors/index.html
ErrorDocument 403 /var/www/errors/index.html
ErrorDocument 404 /var/www/errors/index.html
ErrorDocument 500 /var/www/errors/index.html
Run Code Online (Sandbox Code Playgroud)

Docuement root设置为/ var/www/mywebsite/web,它位于许多虚拟主机上.我可以导航到index.html页面.

我所看到的只是通用的Apache 401页面,任何想法.

编辑:这是我的浏览器中的错误消息:

需要授权

此服务器无法验证您是否有权访问所请求的文档.您提供了错误的凭据(例如,密码错误),或者您的浏览器不了解如何提供所需的凭据.

此外,尝试使用ErrorDocument处理请求时遇到401 Authorization Required错误.Apache/2.2.9(Debian)PHP/5.2.6-1 + lenny8与Suhosin-Patch Server在www.dirbe.com端口80

apache apache2 custom-error-pages

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

修复Symfony2中的要求

我在我的机器上安装了Symfony2.

当我检查本地网址中的要求时:

localhost/Symfony2/web/config.php
Run Code Online (Sandbox Code Playgroud)

它说:

主要问题

在php.ini*中设置"date.timezone"设置(如Europe/Paris).

建议

在php.ini*中将short_open_tag设置为off.

在php.ini*中将magic_quotes_gpc设置为off.

  • 必须在"/etc/php5/apache2/php.ini"中完成对php.ini文件的更改.

我已在内部/etc/php5/apache2/php.ini和内部进行了必要的更改/etc/php5/cli/php.ini:

date.timezone ="欧洲/马德里"

short_open_tag =关闭

magic_quotes_gpc =关闭

双方short_open_tagmagic_quotes_gpc在那里已经设置为关闭,当我检查在php.ini文件.

之后我重新启动了apache2:

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

但是我仍然得到相同的错误消息.

我使用Symfony 2.1.2,Ubuntu 12.04和PHP 5.3.6

更新:

如果我从浏览器运行phpinfo(),它会显示它所在的加载配置文件:

/etc/php5/apache2/php.ini
Run Code Online (Sandbox Code Playgroud)

如果我运行php -i | grep php.ini它说它所在的加载配置文件:

/etc/php5/cli/php.ini
Run Code Online (Sandbox Code Playgroud)

这些是我已经进行了更改的两个文件.

我已确保更改已保存在文件中.我也在php文件中使用了phpinfo()并在浏览器中执行它.它表示未设置date.timezone的值,并且magic_quotes_gc和short_open_tag设置为On.

如果我执行php app/check.php,需求得到解决,所以我认为/etc/php5/cli/php.ini它正常工作并且只有一个问题/etc/php5/apache2/php.ini,即与浏览器一起工作的问题.

php apache2 symfony symfony-2.1

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

如何禁用301重定向,在Apache中为目录名添加尾部斜杠

Apache 2.2.20自动重定向所有指向目录的请求,并且没有带有斜杠的相同URL的斜杠,如下所示:

GET /some/path/to/dir HTTP/1.1
Host: www.some.org
...

301 Moved permanently
Location: http://www.some.org/some/path/to/dir/
Run Code Online (Sandbox Code Playgroud)

在所有情况下,这是一个很好的行为,但我需要为一个特殊文件夹(不是所有)关闭此功能,并且无法找到我能做到的.

搜索"重写"规则告诉founds什么都没有 - 只有指令LoadModule mod_rewrite.so.此外,目录树中的目录服务器中没有.htaccess文件.还有其他指令可以制造东西吗?

UPD1我尝试使用下一个配置通过HTTP设置SVN:

LoadModule dav_svn_module     /opt/libexec/mod_dav_svn.so
LoadModule authz_svn_module   /opt/libexec/mod_authz_svn.so

NameVirtualHost *:8000
<VirtualHost *:8000>
    ServerAdmin admin@some.host.org
    ServerName some.host.org
    DocumentRoot /path/to/wwwroot
    DAVLockDB /opt/var/lock/davlock/svndavlockdb

   <Directory /path/to/wwwroot>
        Options FollowSymLinks Indexes
#        #AllowOverride None
        Order allow,deny
        Allow from all
   </Directory>

   <Directory /path/to/wwwroot/svn>
        Options FollowSymLinks Indexes
        AllowOverride None
        Order allow,deny
        Allow from all
   </Directory>

    CustomLog /path/to/wwwroot/log/access_log.txt combined
    ErrorLog  /path/to/wwwroot/log/error_log.txt

    <Location /svn>

        #AllowOverride None
        #RewriteEngine Off
        #RewriteOptions AllowNoSlash
        DirectorySlash Off …
Run Code Online (Sandbox Code Playgroud)

apache mod-rewrite apache2 url-rewriting

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

在Windows上安装Apache 2.4时出错 - 未以管理员身份登录

我正在尝试按照本指南在我的Windows Vista上设置Apache 2.4 .但是当我运行comman httpd -k install时,我感到非常恐怖

//错误(OS 5)访问被拒绝.:AH00369:无法打开WinNT服务管理器,您可能忘记以管理员身份登录?

我在计算机上打开时没有以管理员身份登录.当我检查控制面板,管理工具,然后服务Apache不在列表中.

任何人都可以帮忙吗?

installation apache2

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

mod_rewrite指令在.htaccess中工作,但在httpd.conf中被忽略

在apache2中与mod_rewrite挣扎.问题是当将指令放入httpd.conf时会被忽略.

如果我AllowOverride All在sites-available/default中设置并将指令添加到.htaccess,则它会起作用,并且每个请求都会在mod_rewrite.log中弹出.

但是当我删除.htaccess并将AllowOverride All指令添加到httpd.conf时,它被忽略了.

Httpd.conf看起来像这样:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteLog "/var/log/apache2/mod_rewrite.log"
    RewriteLogLevel 4 
    RewriteRule ^/.* http://www.google.com                                     
</IfModule>
Run Code Online (Sandbox Code Playgroud)

(只需选择谷歌进行调试)

Phpinfo()在加载的模块中显示mod_rewrite,rewrite.load在/ mods-enabled符号链接到mods-available,即它确实存在.此外,当我删除mod_rewrite.log时,它是在服务器启动时创建的,IMO表示读取了httpd.conf并且存在mod_rewrite.c.但mod_rewrite.log保持空白,这表示没有请求发送到mod_rewrite.此外,当将废话放入httpd.conf服务器时,将无法启动并抛出错误.

我错过了什么?有没有像AllowOverride我必须设置甚至主配置文件?

我已经玩过/.htaccess使用相对路径而httpd.conf没有.我也试过设置<Directory>标签,这对我来说没有意义,但仍然试着看看它是否有任何变化......帮助?!


自己想出来,但万一有人遇到同样的问题:

httpd.conf中设置的"全局"重写规则必须包含在每个虚拟主机中

<VitualHost *:80>
    RewriteEngine on
    RewriteOptions Inherit
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

否则他们将无法在VHost中工作.此外,父规则在子规则之后应用.

mod-rewrite debian apache2

10
推荐指数
0
解决办法
1786
查看次数

使用apache config和htaccess为dev和production动态设置配置变量

简短的摘要

我需要能够在Apache站点配置中设置一个环境变量,用于定义站点是开发,测试还是生产.

Web根目录中的htaccess文件将根据Apache配置中的条目定义网站的配置变量(数据库凭据,域等)

我还需要在位于另一个目录中的另一个htaccess中使用web根htaccess中定义的变量之一.

站点配置

Apache配置(dev/beta)

我想在他们的Apache站点配置文件中为我的dev和beta环境设置一个环境变量

像这样的东西:

(我确定它不是正确的语法)

SetEnv environment_type dev
Run Code Online (Sandbox Code Playgroud)

- 要么 -

SetEnv environment_type beta
Run Code Online (Sandbox Code Playgroud)


Apache Config (生产)

生产站点apache config可能根本不设置它,或者它可以:

SetEnv environment_type prod
Run Code Online (Sandbox Code Playgroud)

但这是可选的


.htaccess (设置站点配置变量)

然后,在公共webroot的.htaccess文件中设置用于数据库连接,域名等的配置变量,如下所示:

(再次,只是模拟语法)

<If (environment_type exists) && (environment_type == dev)>
    SetEnv base_dir /www/example.com/dev/
    SetEnv db_host localhost
    SetEnv db_name devdb
    SetEnv db_user devuser
    SetEnv db_password devpass
    SetEnv web_domain www.devdomain.com
    SetEnv cookie_domain .devdomain.com
<elseif (environment_type exists) && (environment_type == beta)>
    SetEnv base_dir /www/example.com/beta/
    SetEnv db_host localhost
    SetEnv db_name betadb
    SetEnv db_user betauser
    SetEnv …
Run Code Online (Sandbox Code Playgroud)

php apache .htaccess apache2 .htpasswd

10
推荐指数
1
解决办法
5144
查看次数

为什么Ubuntu 16.04上不存在apache2模块http2?

我想安装htt2_module.按照此链接中列出的步骤重新安装Ubuntu 14.04后,我尝试启用http2_module刚刚运行

sudo a2enmod http2
Run Code Online (Sandbox Code Playgroud)

但我得到:模块http2不存在!

安装的apache版本是:Apache/2.4.7,然后作为一种解决方法我尝试使用此链接添加以下存储库

sudo add-apt-repository ppa:ondrej/apache2
Run Code Online (Sandbox Code Playgroud)

用sudo apt-get update刷新后,再次运行命令安装/启用http2我得到了同样的错误.模块http2不存在.

apache2 ubuntu-14.04 http2

10
推荐指数
2
解决办法
9408
查看次数