我计划尽快获得一个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文件.
我正在尝试使用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)
虽然没有得到初始代码的错误
我的服务器是apache 2.2,它为php应用程序提供服务,现在我想将它配置为服务于J2EE应用程序.
我认为有一个Apache模块可以将WAR文件部署到其中,有人可以帮助我吗?
谢谢
这是.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
我在我的机器上安装了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_tag并magic_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,即与浏览器一起工作的问题.
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) 我正在尝试按照本指南在我的Windows Vista上设置Apache 2.4 .但是当我运行comman httpd -k install时,我感到非常恐怖
//错误(OS 5)访问被拒绝.:AH00369:无法打开WinNT服务管理器,您可能忘记以管理员身份登录?
我在计算机上打开时没有以管理员身份登录.当我检查控制面板,管理工具,然后服务Apache不在列表中.
任何人都可以帮忙吗?
在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中工作.此外,父规则在子规则之后应用.
我需要能够在Apache站点配置中设置一个环境变量,用于定义站点是开发,测试还是生产.
Web根目录中的htaccess文件将根据Apache配置中的条目定义网站的配置变量(数据库凭据,域等)
我还需要在位于另一个目录中的另一个htaccess中使用web根htaccess中定义的变量之一.
我想在他们的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可能根本不设置它,或者它可以:
SetEnv environment_type prod
Run Code Online (Sandbox Code Playgroud)
但这是可选的
然后,在公共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) 我想安装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 ×10
apache ×3
mod-rewrite ×2
php ×2
.htaccess ×1
.htpasswd ×1
debian ×1
http2 ×1
installation ×1
java-ee ×1
mod-proxy ×1
symfony ×1
symfony-2.1 ×1
ubuntu-14.04 ×1
vhosts ×1
vps ×1
xmpp ×1