我有两个运行在同一台服务器上的 ruby on rails 3 应用程序,(ubuntu 10.04),都带有 SSL。
这是我的 apache 配置文件:
<VirtualHost *:80>
ServerName example1.com
DocumentRoot /home/me/example1/production/current/public
</VirtualHost>
<VirtualHost *:443>
ServerName example1.com
DocumentRoot /home/me/example1/production/current/public
SSLEngine on
SSLCertificateFile /home/me/example1/production/shared/example1.crt
SSLCertificateKeyFile /home/me/example1/production/shared/example1.key
SSLCertificateChainFile /home/me/example1/production/shared/gd_bundle.crt
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
</VirtualHost>
<VirtualHost *:80>
ServerName example2.com
DocumentRoot /home/me/example2/production/current/public
</VirtualHost>
<VirtualHost *:443>
ServerName example2.com
DocumentRoot /home/me/example2/production/current/public
SSLEngine on
SSLCertificateFile /home/me/example2/production/shared/iwanto.crt
SSLCertificateKeyFile /home/me/example2/production/shared/iwanto.key
SSLCertificateChainFile /home/me/example2/production/shared/gd_bundle.crt
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
什么问题:
在重新启动我的服务器时,它给了我一些这样的输出:
* Restarting web server apache2
[Sun Jun 17 17:57:49 2012] [warn] …
Run Code Online (Sandbox Code Playgroud) 我想知道VirtualHost Context 中“ default :*” 和 “*:*”之间的区别。
<VirtualHost _default_:*>
#...
ServerName host.example.com
#...
</VirtualHost>
<VirtualHost *:*>
#...
ServerName host.example.com
#...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我不知道区别和用途。
thk
我正在尝试在 Mac OS X 上设置虚拟主机。我一直在修改 httpd.conf 并重新启动服务器,但没有让它正常工作。此外,我注意到它不在 httpd.conf (Libraries/WebServer/Documents) 中提到的 DocumentRoot 中提供文件,而是在不同的目录 (/usr/local/apache2/htdocs) 中提供文件。我在 httpd.conf 中的任何地方都没有看到这个文件夹。此外,PHP 可以工作,但“LoadModule php5_module”行被注释掉了。这让我觉得它在使用另一个 .conf 文件。如何确定实际加载了哪个配置?
更新:我刚刚删除了 httpd.conf 和 apache 在重启后的行为相同,所以它肯定没有使用它!
我安装了 Zend Server 并注意到我的 httpd.conf 文件中添加了如下内容:
<Location /ZendServer>
Order Allow,Deny
Allow from 127.0.0.1
</Location>
Alias /ZendServer "C:\Program Files\Zend\ZendServer\GUI\html"
<Directory "C:\Program Files\Zend\ZendServer\GUI\html">
AllowOverride All
</Directory>
Run Code Online (Sandbox Code Playgroud)
但我似乎无法理解Location和Directory之间的区别。我更改为如下内容,这对我来说更有意义,并且仍然有效:
<Location /ZendServer>
AllowOverride All
Order Allow,Deny
Allow from 127.0.0.1
</Location>
Alias /ZendServer "C:\Program Files\Zend\ZendServer\GUI\html"
Run Code Online (Sandbox Code Playgroud)
我可以保留我的更改还是应该将其恢复原状?
我一直很难找到这个:你怎么能问 apache 它用来加载哪个 httpd.conf 文件?
当你有多个apache的实例在运行,或者你长时间没有看机器,并且磁盘上有很多httpd.conf文件时,就会变得困难!
非常感谢 :)
我有一个很大的 httpd.conf 文件,其中大部分是虚拟主机。有没有办法制作一个文件,比如 virtual_hosts.conf,并从 httpd.conf 中包含它?我用谷歌搜索了一下,但似乎找不到包含多少,只是模块加载。
我有 Apache2 与 PHP + PHP-FPM 配置根据:
http://wiki.apache.org/httpd/PHP-FPM
我正在编写一个脚本,需要很长时间才能在内部 Vhost 上执行,但一直超时,如果脚本在 30 秒内执行,一切都会完美运行。
我的 apache 日志告诉我:
[Wed Apr 17 21:57:23.075175 2013] [proxy_fcgi:error] [pid 9263:tid 140530454267648] (70007)The timeout specified has expired: [client 58.169.202.172:49017] AH01075: Error dispatching request to :, referer:
Run Code Online (Sandbox Code Playgroud)
尝试运行脚本时,我在503 Service Unavailable
执行时间刚好 30 秒后得到了一个。从逻辑上讲,这意味着我有一个超时指令或设置为 30 秒,但我在 Vhost 的配置中有这些:
Timeout 600
<IfModule proxy_module>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9001/home/pyrokinetiq/scripts/$1 timeout=600
ProxyTimeout 600
</IfModule>
Run Code Online (Sandbox Code Playgroud)
(php-fpm 对我来说在端口 9001 上运行)
我也试过把Timeout
和ProxyTimeout
放在httpd.conf
没有区别的地方。
似乎有另一个特定于 的超时设置mod_proxy_fcgi
,但我找不到它。我从官方 tarball 安装了 Apache2 httpd,似乎没有一个 …
我们有一个 3000 301 重定向的列表。我们需要帮助
谢谢。
我已经设置了我的 Apache 服务器,并且 PHP/MySQL 运行良好!
但问题是,由于它是一个仅限开发的服务器,我该如何保密?保持内容私密的唯一原因是如果脚本出错,如果它成为面向公众的站点(以及其他人也共享同一个网络的事实!),我不希望出现 Apache 错误,而且我更少可能将我的 PC 用作虚拟主机 - 我更有可能使用虚拟主机提供商的路线来访问实际的实时站点。
目前我可以通过三种方式访问它:
http://localhost(或http://127.0.0.1,另一种方式和 localhost 的 IP,但我可以接受任何一种方式!)
http 192.168.0.1(我的路由器IP)
http pc-name-here(我的 PC 的名称,显然这在 Windows PC 之间有所不同!)
[注意,不能发布链接,因此对于其他两个,您必须像第一个一样插入冒号/正斜杠]。
但是,我只想通过第一个访问它。它正在侦听端口 80(我不想改变它)。这是不可能的,还是我错了?我对 PHP/webdesign 的了解比网络方面多一点,所以这对我来说是第一次!
基本上,我希望它只能通过该机器上的 localhost 访问,而不是外部 IP 地址或 192.168.0.1 。
我是否需要编辑 httpd.conf 并在每个测试站点上使用拒绝,或者还有其他解决方案吗?
例子:
<Directory /www/vhosts/localhost/>
Options All
AllowOverride All
order allow,deny
allow from 127.0.0.1
deny from 192.168.0.1
deny from my-pc-name
</Directory>
Run Code Online (Sandbox Code Playgroud)
我的操作系统是 Windows 7 Ultimate。
我确实环顾了“网络”,但其中一些对我来说似乎有点技术性。
你会推荐什么?
有什么方法可以显示 Apache 正在使用的有效配置值吗?
我有一个使用多个包含文件的 cPanel 服务器,并且在多个位置定义了一些服务器范围的设置。我想找到一种方法来确认 Apache 在运行时实际使用的是哪个值。
httpd.conf ×10
apache-2.2 ×9
virtualhost ×2
301-redirect ×1
directory ×1
httpd ×1
https ×1
loopback ×1
mac-osx ×1
mod-proxy ×1
php ×1
php-fpm ×1
tomcat ×1
windows-7 ×1