我在Windows 7上运行了XAMPP安装.
只要我将一个VirtualHost添加到httpd-vhosts.conf,那么'常规' http://localhost和新的dropbox.local 都不起作用.
这是我添加到我的httpd-vhosts.conf中的内容:
<VirtualHost *:80>
ServerAdmin postmaster@dummy-host.localhost
DocumentRoot "E:/Documenten/Dropbox/Dropbox/dummy-htdocs"
ServerName dropbox.local
ServerAlias www.dropbox.local
ErrorLog "logs/dropbox.local-error.log"
CustomLog "logs/dropbox.local-access.log" combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
所以我查看了我的dropbox.local-error.log以获取任何信息:
[Thu Feb 02 10:41:57 2012] [error] [client 127.0.0.1] client denied by server configuration: E:/Documenten/Dropbox/Dropbox/dummy-htdocs/
Run Code Online (Sandbox Code Playgroud)
这个错误似乎可以通过添加来解决
<directory "E:/Documenten/Dropbox/Dropbox/dummy-htdocs">
Allow from all
</directory>
Run Code Online (Sandbox Code Playgroud)
但现在我在dropbox.local-error.log中收到此错误:
[Thu Feb 02 10:45:56 2012] [error] [client ::1] Directory index forbidden by Options directive: E:/Documenten/Dropbox/Dropbox/dummy-htdocs/
Run Code Online (Sandbox Code Playgroud)
此外,当我尝试访问时httpd-vhosts.conf,我没有在常规中得到任何错误dropbox.local-error.log,虽然我得到了dropbox.local-error.log当我尝试访问它时.
任何人都可以帮忙......这让我很生气:S
编辑:还有http://localhost以下(我已经多次提到它,所以在任何人说之前):
<IfModule dir_module>
DirectoryIndex index.php index.pl index.cgi index.asp …Run Code Online (Sandbox Code Playgroud) 我如何可以重定向mydomain.com任何子域*.mydomain.com,以www.adifferentdomain.com使用NGINX?
我正在使用一台服务器来托管多个Node.js网络应用程序,这些应用程序分布在多个域中.我目前的做法是为不同端口上的每个应用程序运行Express服务器,并运行只是将请求路由(重定向)到正确的端口/ Express服务器的基本服务器.这有效,但这意味着我的基本服务器正在路由每个HTTP请求(并通过手动重定向),并且我的用户将我的应用视为托管在[hostname.com]:8000.
经过一些研究,我发现我可以使用http-proxy来满足我的路由需求,但我仍然想知道在同一系统上运行多个Express服务器是否有最佳实践.这是我计划如何做的:
每个Web应用程序都有自己的文件夹,具有完整的Express文件夹结构(app.js,路由,视图等).应用程序将按域分组,因此示例文件夹结构将是:
hostname.com/
app.js
routes/
views/
...
app1/
app1.js
routes/
views/
...
app2
...
hostname2.com/
app.js
routes/
views/
...
Run Code Online (Sandbox Code Playgroud)
我将不得不分别用节点(或永远,我目前正在使用)运行每个app.js ,并且每个都必须在内部使用不同的端口,并且跨应用重定向指向端口目标应用.
那么,这是我目前的计划.有什么问题,我应该避免哪些陷阱?最重要的是,是否有针对此问题的既定解决方案 - 使用Node.js/Express在同一系统上托管多个Web应用程序的问题?
编辑:我计划最终使用WebSockets和HTTPS,我的设置可以支持的带宽量对我来说并不重要 - 这是一个开发服务器(至少现在).感谢David Ellis提出的WebSockets问题.
第二次编辑:感谢EhevuTov和David Ellis的回答,两者都有很大帮助.我仍在为我的应用程序确定一个整体结构,看起来这个问题通过StackOverflow问题得到了详细解决
第三次编辑:自从发布这个问题以来我已经找到了一些方法(尽管我还有很长的路要走).在我的GitHub存储库中查看这个文件,它利用了我从这个问题的答案中学到的东西!
我很乐意使用nginx来提供具有多个域名和SSL的网站:
两者都使用相同的vhost,所以我只设置server_name两次.问题是,我需要nginx为每个域名提供正确的ssl证书.
这可能是一个虚拟主机还是我需要设置两个虚拟主机?
好的,所以我以前设置了两个虚拟主机,它们工作正常.它们都包含简单的Web项目,http://project1并且可以http://project2在浏览器中正常工作.
无论如何,我来添加另一个vhost.我使用127.0.0.1 project3编辑了/ etc/hosts文件,并通过复制和粘贴project2的先前条目并编辑文件路径来更新httpd-vhosts.conf文件.
我已经检查了所有文件和文件夹权限(实际上我是从project2复制并粘贴的),只是在index.php文件中放了一个"hello world"消息.
访问时我收到403禁止权限被拒绝的消息 http://project3
为什么这样,我只能弄清楚我错过了什么步骤,因为一切似乎都设置正确.
提前致谢.
可能有人问过,但我找不到直接答案,或者我找不到的答案.
我有一个域mydomain.com,解析为IP; 我们称之为8.8.8.8.DNS设置还将两个子域指向具有A记录的IP地址.这些都是dev.mydomain.com和staging.mydomain.com.两者都有一个指向8.8.8.8的A记录.
在服务器(8.8.8.8)上,我有两个虚拟主机文件.这些如下:
staging.mydomain.com.conf
<VirtualHost *:80>
ServerName staging.mydomain.com
DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
和...
dev.mydomain.com.conf
<VirtualHost *:80>
ServerName dev.mydomain.com
DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
问题是:
无论我访问http://staging.mydomain.com还是http://dev.mydomain.com,我总是登陆staging.mydomain.com(Apache提供这些文件).
我重新启动了Apache甚至服务器.如果我更改.conf文件的顺序,以便dev是第一个,我总是看到它.任何建议都会非常感激.谢谢!
我发现自己又回到了这个问题!如果您知道语法正确,则可能是一个错误的符号链接.删除它并重新创建,重新启动之间的apache.我刚刚做了这个,它解决了几个小时的头疼.在CentOS您可以检查您的虚拟主机提供与httpd -S
当虚拟主机的apache 日志文件不存在或不可写时,我也发现存在此问题.
我尝试magento.developers.com使用XAMPP在Ubuntu 12.04中创建虚拟主机.
首先我编辑了/opt/lampp/etc/extra/httpd-vhosts.conf并添加了以下几行:
<VirtualHost *:80>
ServerAdmin webmaster@magento.developers.com
DocumentRoot "/opt/lampp/htdocs/magento"
ServerName magento.developers.com
ErrorLog "logs/magento.developers.com-error_log"
CustomLog "logs/magento.developers.com-access_log" common
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我已经使用该命令重新启动了XAMPP sudo /opt/lampp/lampp restart,然后我编辑
了hosts文件并添加了:
127.0.0.1 magento.developers.com
Run Code Online (Sandbox Code Playgroud)
然后我尝试magento.developers.com使用浏览器进行访问,但它无法访问
/opt/lampp/htdocs/magento
Run Code Online (Sandbox Code Playgroud)
我需要做些什么来使它工作并访问magento文件夹而不是htdocs(根)?
是否可以在Apache 2.x中的同一台服务器上运行SSL协议和非SSL协议?
因此,如果我访问http://example.com(非SSL)和https://example.com(SSL),它们都将可用.
如果是这样,我是否需要创建虚拟主机?这个VirtualHost指令怎么样,有人能给我举个例子吗?(假设我已经有证书)
我想知道如果我将.htaccess文件内容移动到apache2的vhost文件中是否可以提高性能?
这是我的.htaccess的内容
Options +FollowSymLinks +ExecCGI
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_NAME} ^([^.]+\.[^.]+)$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
如果这样做是个好主意,我应该在vhost声明中放置哪些内容?
谢谢!