我正在尝试在我维护的Django站点上设置SSL,并且在使用SSL设置我的VirtualHost时遇到一些麻烦.我按照这里的说明操作,但每次尝试重新启动apache时,都会告诉我由于多个虚拟主机使用相同的wsgi配置而无法重启:
/etc/init.d/apache2 reload
Syntax error on line 33 of /etc/apache2/sites-enabled/www.mydomain.com:
Name duplicates previous WSGI daemon definition.
...fail!
Run Code Online (Sandbox Code Playgroud)
我理解发生了什么,而不是如何解决它.任何建议表示赞赏,谢谢!这是我的VirutalHosts文件的样子:
<VirtualHost *:80>
ServerAdmin my@email.com
ServerName mydomain.com
ServerAlias www.mydomain.com
DocumentRoot /sites/mydomain
# WSGI Settings
WSGIScriptAlias / /sites/mydomain/wsgi_handler.py
WSGIDaemonProcess mydomain user=myuser group=mygroup processes=1 threads=1
WSGIProcessGroup mydomain
# Static Directories
Alias /static /sites/mydomain/static/
<Location "/static">
SetHandler None
</Location>
Alias /img /sites/mydomain/img/
<Location "/img">
SetHandler None
</Location>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin my@email.com
ServerName mydomain.com
ServerAlias www.mydomain.com
DocumentRoot /sites/mydomain
# WSGI Settings
WSGIScriptAlias …Run Code Online (Sandbox Code Playgroud) 我正在使用一个共享主机,它使用cPanel作为其控制面板,而cPanel public_html是默认的根目录,因此我无法使我的Laravel应用程序正常工作.
有没有办法让Laravel使用public_html而不是公用文件夹?
我有一台运行Apache的Linux主机和一台运行IIS的Windows主机.我有一个指向Linux主机的域,需要将其中继(代理)请求发送到IIS; 因此我在Apache中有以下虚拟主机定义(工作正常):
<VirtualHost 192.168.0.2:80>
ServerName www.acme.com
DocumentRoot /var/www/acme.com
RewriteEngine On
RewriteOptions Inherit
RewriteRule ^/(.*) http://win.acme.com/$1 [P]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
现在我想添加SSL支持; 定义变为:
<VirtualHost 192.168.0.2:443>
ServerName www.acme.com
DocumentRoot /var/www/acme.com
GnuTLSEnable On
GnuTLSPriorities NORMAL:%COMPAT
GnuTLSCertificateFile /var/www/ssl/www.acme.com.crt
GnuTLSKeyFile /var/www/ssl/www.acme.com.key
RewriteEngine On
RewriteOptions Inherit
RewriteRule ^/(.*) https://win.acme.com/$1 [P]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我在两个Web服务器上都有有效且可信的证书,如果我访问https://win.acme.com一切都很好,但是,当我访问时,https://www.acme.com我收到500内部服务器错误消息.查看错误日志显示:
[Wed Jul 20 08:35:34 2011] [错误] [客户端76.168.166.70] SSL代理请求www.wileybits.com:80但未启用[提示:SSLProxyEngine] [Wed Jul 20 08:35:34 2011] [error] proxy:HTTPS:无法为74.166.186.70:443启用ssl支持(win.acme.com)
请注意代理请求似乎是针对错误的域(wileybits)...它显示的域也由我的Apache服务器托管,但我不知道为什么它出现在acme.com的日志中(反向也许是DNS查找?)
无论如何,我错过了什么?
提前谢谢 - ekkis
ps主机名和地址已被修改,以保护无辜:)
*更新*
有:
RewriteRule ^/(.*) https://win.acme.com/$1 [R,L]
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常,但当然,Windows的主机名变得可见,这在我的场景中是不可接受的
我也试过(而不是mod_rewrite):
ProxyRequests Off
ProxyPass / …Run Code Online (Sandbox Code Playgroud) 我看到这个标头附加到apache的响应中.它在新时代的浏览器中是否有任何意义; 或者仅仅是为了规避旧版Netscape中的错误.看起来很奇怪.
编辑
我正在对我们的应用程序进行性能测试,当我在Jmeter响应文本中看到时,有一个奇怪的标题返回.它说:
X-pad: avoid browser bug
Run Code Online (Sandbox Code Playgroud)
而已!所以我尝试了一些谷歌搜索,似乎为Netscape浏览器的bug添加了一个标题.无论如何,我仍然很好奇,因为我们离这些版本的浏览器太远了(谢天谢地),有没有一个坚实的理由,它仍然存在.我们使用apache2.
希望这些细节有所帮助.
干杯
我在桌面上运行ubuntu 13.04 64bit,我安装了Apache2,MySQL和PHP等.
我想让我的网络根目录/home/afflicto/public_html而不是/var/www.于是我就跟着去了本指南:
http://www.maketecheasier.com/install-and-configure-apache-in-ubuntu/2011/03/09
(我所做的一切,从"配置不同的网站"),因为我喜欢解决更多.
这就是我所做的:
安装Apache2,MySQL等..
复制/etc/apache2/sites-avaliable/default到/etc/apache2/sites-available/afflicto.然后编辑它,它现在看起来如下:
在/ etc/apache2的/网站可用/ afflicto
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/afflicto/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/afflicto/public_html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel …Run Code Online (Sandbox Code Playgroud) 在哪里可以获得有关Apache Linux系统中使用何种MPM的信息?
我有两个域名,两个ssl证书和两个IP地址.我正在尝试为他们配置我的apache虚拟主机文件.
首先,我注释掉了端口80和443的所有"NameVirtualHost"和"Listen"实例.然后我用我的虚拟主机文件做了以下操作.
domain1的VirtualHost文件:
NameVirtualHost 1.1.1.1:80
Listen 1.1.1.1:80
Listen 1.1.1.1:443
<VirtualHost 1.1.1.1:80>
ServerName domain1.com
...
</VirtualHost>
<VirtualHost 1.1.1.1:443>
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
domain2的VirtualHost文件:
NameVirtualHost 2.2.2.2:80
Listen 2.2.2.2:80
Listen 2.2.2.2:443
<VirtualHost 2.2.2.2:80>
ServerName domain2.com
...
</VirtualHost>
<VirtualHost 2.2.2.2:443>
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud) 我在网站的.htaccess文件中指定了以下属性:
AddOutputFilterByType DEFLATE image/svg+xml
DeflateCompressionLevel 9
Header append Vary Accept-Encoding
Run Code Online (Sandbox Code Playgroud)
但是,我的SVG资产不是以压缩形式发送的:
$ curl https://example.org/assets/svg/asset.svg --silent -H "Accept-Encoding: gzip,deflate" --write-out "${size_download}\n" --output /dev/null
152655
$ curl https://example.org/assets/svg/asset.svg --silent --write-out "%{size_download}\n" --output /dev/null
152655
Run Code Online (Sandbox Code Playgroud)
我验证了此资产(asset.svg)是image/svg+xml使用Chrome 以MIME类型发送的,但是使用Web Developer工具时,此特定文件在发送到客户端时不会被压缩.
将其他MIME类型添加到.htaccess文件是成功的(例如,添加text/html压缩HTML资源).
这似乎特定于如何处理SVG数据.我还可以尝试或排除故障以使SVG压缩工作?
我在同一个apache服务器上有几个命名的虚拟主机,对于我需要确保只允许一组特定IP地址访问的虚拟主机之一.
请建议最好的方法来做到这一点.我看过mod_authz_hosts模块,但看起来我不能在虚拟主机内部进行.
这是我长期以来一直存在的问题.我想在我的Windows计算机上运行PHP应用程序,它的加载时间非常长,大约10-25秒.我尝试了很多东西:
更新:我甚至尝试过APC - 它有所改善,但仍然是6-8秒/页
我将我的文件上传到Linux服务器(共享主机),它运行在300-500毫秒左右.在XAMPP安装上,我尝试运行其他(即非Symfony2)应用程序(例如phpmyadmin),它也比共享主机慢,但速度不是很慢,加载时间为2-3秒.在我将Linux更改为主操作系统之前,我该如何提高性能?我的笔记本电脑配有i7 CPU,4 GB RAM,5400RPM HDD,Win7 x64.
谢谢您的帮助!
UPDATE2:由于一些神秘的原因,我的Symfony路由无法使用fcgid(它给了我一个404错误)所以我回去使用PHP作为模块.现在,它已成为有史以来最糟糕的(比以前更糟糕的模块):应用模式20-25秒,在开发模式下,每次超过30秒,所以我得到一个超时错误,它与没有启用APC.
在这里你可以看到这个错误.这是可重现的:每次在30秒内达到不同的执行点:
apache2 ×10
apache ×3
php ×2
virtualhost ×2
.htaccess ×1
cpanel ×1
header ×1
ip ×1
laravel-5 ×1
mod-proxy ×1
mod-rewrite ×1
performance ×1
ssl ×1
svg ×1
ubuntu ×1
ubuntu-10.04 ×1
windows-7 ×1
wsgi ×1