我在Express with Node中使用vhost功能来管理我的应用程序的多个子域.该应用程序使用相同的会话密钥和密钥,我相信我已经使用了正确的会话cookie设置:
cookie: {
path : '/',
domain : '.example.com',
httpOnly : false,
maxAge : 1000*60*60*24*30*12 //one year(ish)
}
Run Code Online (Sandbox Code Playgroud)
我在我的常规站点上设置了一个会话变量,子域未定义,例如http://example.com,如下所示:
req.session.rep_id = rep._id;
res.redirect('https://' + company.name + '.example.com/');
Run Code Online (Sandbox Code Playgroud)
但是当我将它们重定向到subdomain.example.com时,会话没有将rep_id键设置为任何内容.似乎会话正在子域之间重置.我该如何解决这个问题?
我正在尝试在我的localhost(XAMPP)上创建一个虚拟主机.尝试了每一个组合,但我总是加载htdocs而不是特定的文件夹
这是hosts文件:
127.0.0.1 localhost
::1 localhost
127.0.0.1 devsnappy
Run Code Online (Sandbox Code Playgroud)
这是httpd-vhosts.conf:
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot E:/xampp/htdocs/snappy/public
ServerName devsnappy
<Directory "E:/xampp/htdocs/snappy/public">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我有Vagrant设置和运行CentOS 6.5 x64,它运行良好.在这一个VM中运行多个站点没有问题.所有站点都在/ var/www/public文件夹中运行,但从/ var/www/html运行的PhpMyAdmin除外.我正在尝试使用vagrant共享来访问正在运行的任何vhost站点.问题是vagrant共享只显示/ var/www/html文件夹的内容.
为了获得对我新创建的/ var/www/public文件夹的访问权限,我还需要做些什么吗?我已经尝试在另一台机器上编辑hosts文件,看看我是否可以将我分配给这些网站的任何网址转发到当前时髦的"流浪汉共享"地址,但这不起作用.我个人对我接下来要做的事情感到茫然.
这是我的基本设置.Vagrant版本1.5.4,VirtualBox版本4.3.8,Windows 7 x64,PuPHPet配置文件,但在下载后为添加的vhosts,ssh配置,mysql和bash文件进行了高度自定义.
希望其他人也可能遇到这个问题.有没有人有一个好转的方向?
感谢大家,
c0p
我在自己的问题上取得了重大进展.我正在做的是允许从我的Vagrant机器访问人员的异地.我并不需要他们一直都能完全访问,而只是按照原样查看内容并通知我他们可能需要的任何更改.你知道,标准开发者的东西.所以这就是我想出的.
一般地研究网络我遇到了这个链接:https: //groups.google.com/forum/#!topic/vagrant-up/IcEl9-V9wsU
这家伙正在运行Nginx并且看起来像我一样问同样的问题但使用不同的网络服务器.如果您遇到与Nginx类似的事情,请查看该页面.他确实有答案.我对Nginx一无所知,但仍然能够推断出我需要的东西.
所以我从那个页面得到的是,一旦他从Vagrant网站收到了不寻常的链接,他就迅速编辑了Nginx的配置文件并重新启动了网络服务器.现在,疯狂的网址指向虚拟主机文件位置并导致他想要显示的页面实际显示,而不只是显示默认的"欢迎"页面.
我想了一会儿,决定编辑我自己的配置,看看会发生什么.
我正在运行CentOS所以我编辑了/etc/httpd/conf/httpd.conf文件.
在这个文件的一半左右有一条注释#Listen 80行.紧接着这一行(或者如果你想要的话给它一个空间),我补充说:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin some_dude@home.com
DocumentRoot /var/www/public/sitename
ServerName hungry-lovebird-7142.vagrantshare.com
ServerAlias hungry-lovebird-7142
ErrorLog /var/www/www.sitename.dev-error_log
CustomLog /var/www/www.sitename.dev-access_log common
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我已将DocumentRoot指向我要访问的站点的文件夹,并将ServerName和ServerAlias设置为vagrant共享链接.然后我保存了文件并用sudo service httpd restart重新启动了Apache
然后我跳回到Firefox(Windows 7)并刷新了我在编辑此文件之前已经去过的oddball vagrantshare.com页面.它实际上提取了我在httpd.conf文件中给出的sitename文件夹的内容.所以它有效!Friggin很酷!
我遇到的唯一问题是我在重启Apache时收到此警告:
Stopping httpd: [ OK …Run Code Online (Sandbox Code Playgroud) 我什至不是 100% 确定如何问这个问题。答案可能就在那里,但我找不到。
所以我已经为我的 Mac 设置了虚拟主机,并且我在我的计算机上本地完成了我的所有开发。我的vhost文件夹中有一个文件Sites夹,我有一个文件夹列表,例如:
recipes.cam
database.cam
sandbox.cam
codeigniter.cam
Run Code Online (Sandbox Code Playgroud)
在我的/etc/hosts文件中,每个条目都有一个条目:
# vhosts
127.0.0.1 recipes.cam
127.0.0.1 database.cam
127.0.0.1 sandbox.cam
127.0.0.1 codeigniter.cam
# ...
Run Code Online (Sandbox Code Playgroud)
这很好用。当我在浏览器中访问http://recipes.cam时,它会显示~/Sites/vhosts/recipes.cam.
所以这是我的问题:有没有办法让任何.cam以重定向到本地主机的地址结束?所以我不必hosts每次添加新目录时都创建一个新条目(这种情况经常发生)。
我127.0.0.1 *.cam在我的hosts文件中尝试过,但没有用:-/
我有一个/var/www/icons在我的Web服务器上调用的目录,它在我的Apache配置中也被引用为别名,如下所示:
Alias /icons/ "/var/www/icons/"
Run Code Online (Sandbox Code Playgroud)
该目录包含许多未使用AFAIK的小型PNG和GIF,以及README文件.
我可以安全地从我的Apache配置中删除这个别名吗?如果没有,我的申请的哪个方面是删除这可能会产生的影响?
这个目录中的文档很少,我必须承认,直到现在我还没有遇到它.
在debian的默认apache2配置中,/etc/apache2/sites-enabled/000-default包含许多默认VirtualHost的设置:
<VirtualHost *:80>
# Many good settings here, among them:
CustomLog ${APACHE_LOG_DIR}/access.log combined
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
在另一个配置文件中,我想覆盖它们中的一个,即CustomLog设置,以便日志转到其他地方.我不想复制或搞乱所有其他设置,例如ScriptAlias.但我仍然希望它适用于<VirtualHost *:80>.
那可能吗?
我试过这个
/etc/apache2/sites-enabled/001-mylog:
<VirtualHost *:80>
CustomLog ${APACHE_LOG_DIR}/my.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
这没有任何影响,大概是因为apache只查看第一<VirtualHost>部分,然后/etc/apache2/sites-enabled/000-default才加载/etc/apache2/sites-enabled/001-mylog.
相反,我尝试将相同的片段放入/etc/apache2/conf.d/mylog,之前加载,/etc/apache2/sites-enabled/000-default因为/etc/apache2/apache2.conf有一个Include conf.d/之前Include sites-enabled/.这确实覆盖了CustomLog我想要的价值.但是现在这个ScriptAlias从未/etc/apache2/sites-enabled/000-default生效.
我想避免重复一切,从/etc/apache2/sites-enabled/000-default有效创建默认debian apache配置文件的fork.
Apache HTTP Server - 核心文档相当模糊:
收到请求后,服务器首先根据本地IP地址和端口组合将其映射到最佳匹配.非通配符具有更高的优先级.如果根本不发生基于IP和端口的匹配,则使用"主"服务器配置.
如果多个虚拟主机包含最匹配的IP地址和端口,则服务器会根据请求的主机名从这些虚拟主机中选择最佳匹配.如果未找到匹配的基于名称的虚拟主机,则将使用与IP地址匹配的第一个列出的虚拟主机.因此,给定IP地址和端口组合的第一个列出的虚拟主机是该IP和端口组合的默认虚拟主机.
<VirtualHost> 表现得不像 <Directory> …我正在使用Laravel宅基地.对于一个项目,我需要一个特殊的vhost配置,我应该在哪里定义它?
在这种情况下,有无数的教程可以检查cookie是否存在并包含我的内容foobar.
我如何做以下假设mycookie是我想要设置的cookie.
if ($cookie_mycookie does not equal "foobar") {
return 401;
}
Run Code Online (Sandbox Code Playgroud)
我试过以下无济于事.
if (!$http_mycookie ~* "foorbar" ) {
return 401;
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我在配置具有不同域的两个不同Node.js应用程序时遇到问题.有两个目录
"/abc/" -> express-admin setup (backend) -> admin.abc.com
Run Code Online (Sandbox Code Playgroud)
和
"/xyz/" -> express setup (frontend) -> abc.com
Run Code Online (Sandbox Code Playgroud)
我需要admin.abc.com指向express-admin设置和abc.com来表达设置.我安装了vhost,并且该站点都侦听端口80.
添加了
app.use(vhost('abc.com', app)); // xyz/app.js file
app.use(vhost('admin.abc.com', app)); // abc/app.js file
Run Code Online (Sandbox Code Playgroud)
我的问题:
永远安装,每当我启动这两个应用程序时,第二个始终停止.我尝试为两个应用程序使用不同的端口,但仍然有相同的错误.他们单独运行没有问题.
我认为我的设置对于域名转发来说太复杂了.有更好的建议吗?可能是我有一个主app.js文件,我可以使用它来将域路由到各自的应用程序,而无需使用每个应用程序的app.js.
所以我一直在尝试使用EasyPHP Devserver 16.1在我的新Windows 10安装上设置vhost.
我修改了etc/vhosts以包含我的新域(mysite.local),它可以工作,但仍然指向默认的easyphp目录.所以我修改了httpd-vhosts.conf以将该域指向我的新目录:
<VirtualHost *:80>
DocumentRoot "C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:\Users\Chris\Documents\Web_Development\mysite"
ServerName mysite.local
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但是,当我启动服务器时,它会擦除此文件,使其只是空白,并且我的域仍然指向默认的easyphp目录.是什么导致这个/我该如何解决?
我已经尝试将vhost直接放入httpd.conf,但这并没有改变任何东西,我的新域仍指向默认文件夹.
我真的没有得到这个,我绝对需要vhosts工作,所以我可以在多个网站上工作.
我可以回到Xampp,这是我在Mac OS上使用的,但我有一个持续的问题,PHPExcel没有正确导出,所以我想尝试使用Easy PHP