Apache HTTP Server配置
Apache HTTP Server,简称Apache,是一个非常流行的Web服务器,由Apache软件基金会开发。
本文介绍如何设置 Apache。
安装apache
sudo pacman -S apache
配置
Apache 配置文件位于/etc/httpd/conf
。主要配置文件是/etc/httpd/conf/httpd.conf
,其中包括各种其他配置文件。对于简单的设置,默认配置文件应该没问题。默认情况下,网站的默认目录为/srv/http
。
高级选项
修改配置文件/etc/httpd/conf/httpd.conf
User http
出于安全原因,一旦Apache由root用户启动(直接或通过启动脚本),它就会切换到此UID。默认用户为 http,它是在安装过程中自动创建的。
Listen 80
这是Apache将侦听的端口。对于使用路由器的互联网访问,您必须转发端口。
如果您想设置Apache进行本地开发,您可能希望它只能从您的计算机访问。然后将此行更改为:Listen 127.0.0.1:80
。
ServerAdmin you@example.com
这是管理员的电子邮件地址,可以在例如错误页面上找到。
DocumentRoot "/srv/http"
这是放置网页的目录。
如果愿意,可以更改它,但不要忘记更改<Directory "/srv/http">
,否则当您尝试访问新的文档根目录DocumentRoot
时,您可能会收到403错误(缺乏权限)。不要忘记将Require all denied
行更改为Require all granted
,否则您将收到403错误。请记住,DocumentRoot
目录及其父文件夹必须允许其他人执行权限(可以使用 )进行设置(chmod o+x /path/to/DocumentRoot
),否则您将收到 403 错误。
AllowOverride None
在<Directory>
段落中的这个设置会让 Apache 完全忽略 .htaccess 文件。从 Apache 2.4开始,这个设置是默认的,所以如果要使用.htaccess
,请允许Overide. 如果要在.htaccess
中使用mod_rewrite
或其它设置, 可以指定哪些目录允许覆盖服务器配置。
更多设置可以访问 /etc/httpd/conf/extra/httpd-default.conf
,例如
关闭服务器签名:
ServerSignature Off
隐藏 Apache 和 PHP 版本等属性:
ServerTokens Prod
用户目录
在默认设置下,可以通过 http://localhost/~yourusername/
访问用户的主目录并显示~/public_html
中的内容 (可以通过/etc/httpd/conf/extra/httpd-userdir.conf
设置)。 要禁用这个访问,请注释掉/etc/httpd/conf/httpd.conf
文件中的如下行:
Include conf/extra/httpd-userdir.conf
请正确设置目录的权限,使得 Apache 可以访问到文件。主目录和 ~/public_html 必须是可被其它用户执行:
chmod o+x ~
chmod o+x ~/public_html
chmod -R o+r ~/public_html
重启 httpd.service 服务以应用更改。
TLS/SSL
暂略。
Virtual Hosts虚拟主机
注意:您需要为虚拟主机 SSL 支持添加一个单独的部分。
如果需要不止一个主机,取消/etc/httpd/conf/httpd.conf
行的注释:
Include conf/extra/httpd-vhosts.conf
在/etc/httpd/conf/extra/httpd-vhosts.conf
中设置虚拟主机,默认文件包含了一个示例。
要在本地机器测试虚拟主机,将虚拟名称加入 /etc/hosts 文件:
127.0.0.1 domainname1.dom
127.0.0.1 domainname2.dom
重启 httpd.service 服务。
管理多个主机
如果要管理的主机非常多,希望更方便的维护,建议为每一个虚拟主机创建一个配置文件并文件存储到一个文件夹中/etc/httpd/conf/vhosts
。
创建目录:
mkdir /etc/httpd/conf/vhosts
编写单独的配置文件:
sudo vim /etc/httpd/conf/vhosts/domainname1.dom
sudo vim /etc/httpd/conf/vhosts/domainname2.dom
在 /etc/httpd/conf/httpd.conf
中 Include
单独的配置文件:
#Enabled Vhosts:
Include conf/vhosts/domainname1.dom
Include conf/vhosts/domainname2.dom
通过注释或取消注释可以单独启用或禁用一个虚拟主机。
基本的 vhost 文件:/etc/httpd/conf/vhosts/domainname1.dom
<VirtualHost *:80>
ServerAdmin webmaster@domainname1.dom
DocumentRoot "/home/user/http/domainname1.dom"
ServerName domainname1.dom
ServerAlias domainname1.dom
ErrorLog "/var/log/httpd/domainname1.dom-error_log"
CustomLog "/var/log/httpd/domainname1.dom-access_log" common
<Directory "/home/user/http/domainname1.dom">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@domainname1.dom
DocumentRoot "/home/user/http/domainname1.dom"
ServerName domainname1.dom:443
ServerAlias domainname1.dom:443
SSLEngine on
SSLCertificateFile "/etc/httpd/conf/apache.crt"
SSLCertificateKeyFile "/etc/httpd/conf/apache.key"
ErrorLog "/var/log/httpd/domainname1.dom-error_log"
CustomLog "/var/log/httpd/domainname1.dom-access_log" common
<Directory "/home/user/http/domainname1.dom">
Require all granted
</Directory>
</VirtualHost>