当我使用以下方式访问 Apache Web 服务器时本地主机从同一台 Web 服务器 PC,它显示 Apache2 Ubuntu 默认页面。
但是当我使用以下方式访问 Apache Web 服务器时192.168.0.2,它给出了 403 Forbidden 错误(禁止您无权访问此服务器上的/)。
Web 服务器详细信息
- Ubuntu 14.04 LTS
- Apache 版本 2.4.7
所有权命令
www-data sudo adduser ftpuser www-data
sudo chown -R www-data:ftpuser /var/www
sudo chmod -R g+rwX /var/www
在等/apache2/apache2.conf文件
ServerName 192.168.0.2
<Directory/>
AllowOverride All
Require all granted
</Directory>
在等/apache2/端口.conf文件
NameVirtualHost *:80
Listen *:80
一个网站的虚拟主机
<VirtualHost *:80>
ServerName mysite
DocumentRoot /var/www/mysite
<Directory /var/www/mysite>
Options None FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
我需要在哪里做哪些设置?请帮忙...
答案1
1. 你应该配置你的 /etc/hosts 文件像那样:
127.0.0.1 localhost
127.0.0.1 test-site
127.0.1.1 my-hostname
# The following lines are desirable for IPv6 capable hosts. etc...
在哪里test-site
是第二个“localhost”。并且my-hostname
是在中定义的“系统主机名” /etc/hostname
。
2. 您应该定义并启用虚拟主机(VH):
有一个默认的 HTTP VH。它位于 中/etc/apache2/sites-available/
。文件名是000-default.conf
。您必须编辑它(如果需要,您可以重命名它,或者基于它创建其他 .conf 文件),然后必须启用它。
您可以通过创建“软符号链接”手动启用它:
sudo ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/
或者你可以使用Apache2 工具称为a2ensite,其结果相同:
sudo a2ensite 000-default.conf
假设有 3 个虚拟主机,启用SSL,并注册私有域名(以SOS.info为例):
/etc/apache2/sites-available/http.SOS.info.conf
/etc/apache2/sites-available/https.SOS.info.conf
还有一个是为了本主题的目的而创建的:
/etc/apache2/sites-available/http.test-site.conf
前 2 个 VH 的内容是:
$ cat /etc/apache2/sites-available/
http.SOS.info.conf
<VirtualHost *:80>
ServerName SOS.info
ServerAlias www.SOS.info
ServerAdmin [email protected]
# Redirect Requests to SSL
Redirect permanent "/" "https://SOS.info/"
ErrorLog ${APACHE_LOG_DIR}/http.SOS.info.error.log
CustomLog ${APACHE_LOG_DIR}/http.SOS.info.access.log combined
</VirtualHost>
这将把所有 HTTP 请求重定向到 HTTPS。
$ cat /etc/apache2/sites-available/
https.SOS.info.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName SOS.info
ServerAlias www.SOS.info
ServerAdmin [email protected]
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/SOS.info.crt
SSLCertificateKeyFile /etc/ssl/private/SOS.info.key
SSLCertificateChainFile /etc/ssl/certs/SOS.info.root-bundle.crt
#etc..
</VirtualHost>
</IfModule>
这是 HTTPS VH。
这两个文件的内容可以发布在一个文件中,但这样它们的管理(a2ensite
/ a2dissite
)会更加困难。
第三个虚拟主机是为了我们的目的而创建的:
$ cat /etc/apache2/sites-available/
http.test-site.conf
<VirtualHost *:80>
ServerName test-site
ServerAlias test-site.SOS.info
DocumentRoot /var/www/test-site
DirectoryIndex index.html
ErrorLog ${APACHE_LOG_DIR}/test-site.error.log
CustomLog ${APACHE_LOG_DIR}/test-site.access.log combined
<Directory /var/www/test-site>
# Allow .htaccess
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
3. 通过此配置您应该可以访问:
http://localhost # pointed to the directory of the mine Domain
https://localhost # iin our case: /var/www/html (SOS.info), but you should get an error, because the SSL certificate
http://SOS.info # which redirects to https://SOS.info
https://SOS.info # you should have valid SSL certificate
http://www.SOS.info # which is allied to http://SOS.info and redirects to https://SOS.info
https://www.SOS.info # which is allied to https://SOS.info
在主示例中,您应该访问并:
http://test-site # pointed to the directory /var/www/test-site
http://test-site.SOS.info # which is allied to http://test-site
尝试在 Web 浏览器中打开该网站或尝试(在终端中)使用以下命令:
$ curl -L http://test-site/index.html
$ curl -L http://test-site.SOS.info/index.html
当然,你需要index.html
在它们的 DocumentRoot 中有一些页面:)
我将出于迂腐的考虑留下下一篇笔记:)
4.您需要正确配置“/etc/apache2/apache2.conf”。
花些时间提高服务器的安全性是个好主意。这些手册是关于安全配置的:第一和第二。这里您可以免费获得 SSL 证书。以下网站将帮助您检查进度:第一和第二。
根据上述安全手册/etc/apache2/apache2.conf
文件必须类似于:
Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 60
#KeepAlive Off
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
Options None FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /var/www/>
Options None FollowSymLinks
AllowOverride None
Require all granted
</Directory>
AccessFileName .htaccess
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
# Hide Server type in the http error-pages
ServerSignature Off
ServerTokens Prod
# Etag allows remote attackers to obtain sensitive information
FileETag None
# Disable Trace HTTP Request
TraceEnable off
# Set cookie with HttpOnly and Secure flag.
# a2enmod headers
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
# Clickjacking Attack
Header always append X-Frame-Options SAMEORIGIN
# CX-XSS Protection
Header set X-XSS-Protection "1; mode=block"
# Disable HTTP 1.0 Protocol
RewriteEngine On
RewriteCond %{THE_REQUEST} !HTTP/1.1$
RewriteRule .* - [F]
# Change the server banner @ ModSecurity
# Send full server signature so ModSecurity can alter it
ServerTokens Full
# Alter the web server signature sent by Apache
<IfModule security2_module>
SecServerSignature "Apache 1.3.26"
</IfModule>
Header set Server "Apache 1.3.26"
Header unset X-Powered-By
# Hde TCP Timestamp
# gksu gedit /etc/sysctl.conf
# >> net.ipv4.tcp_timestamps = 0
# Test: sudo hping3 SOS.info -p 443 -S --tcp-timestamp -c 1
# Disable -SSLv2 -SSLv3 and weak Ciphers
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"
5.设置防火墙。
要允许/拒绝外部访问您的 Web 服务器,您可以使用联邦水务局(简单的防火墙):
sudo ufw allow http
sudo ufw allow https
仅允许tcp
使用协议:
sudo ufw allow http/tcp
sudo ufw allow https/tcp
您可以直接使用和端口号:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
以防万一您可以重新加载“规则表”:
sudo ufw reload
您可以使用 UFW 的 GUI 界面,称为海湾战争。
sudo apt update
sudo apt install gufw
gufw &
选择Office
配置文件。它将设置:Status:ON
,Incoming:Deny
以及Outgoing:Allow
添加您的规则。
6.如果您有路由器,请不要忘记转发一些端口:
答案2
请使用命令更改您提供文件服务的目录的所有权:
sudo chown -R www-data:www:data <directory_where_you_serve_files_from>
答案3
我应该把你链接到这个答案哪里解决了我的问题。
首先给文件夹添加权限:
sudo chmod -R 775 /var/www
然后添加以下文本:
<Directory /var/www/html>
AllowOverride All
</Directory>
至此文件末尾:
/etc/apache2/sites-available/000-default.conf