環境: ↗ atl.example.com (192.168.1.101)html
↗ www.example.com (192.168.1.101)linux
↗system1.example.com (192.168.1.101) web
centos7 (192.168.1.109) dns 服務器 →system2.example.com(192.168.1.105)vim
↘classroom.example.com(192.168.1.109)centos
Apache爲server端 -> rhel7 server ->(192.168.1.101)(system1.example.com)已設置192.168.1.109爲dns解析瀏覽器
其餘主機爲客戶端 -> rhel7 clinet ->(192.168.1.105)(system2.example.com)已設置192.168.1.109爲dns解析服務器
1.安裝Apacheapp
yum install -y httpd webapp
2.配置防火牆80/tcp對全網開放:firewall-cmd --permanent --add-port=80/tcp && firewall-cmd --reloadtcp
或者針對某個ip域開放:firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.1.0/24 service name=http accept'
3.設置開機自啓與從新啓動:
systemctl enable httpd && systemctl restart httpd
4.設置system1.example.com站點
echo 'system1.example.com' > /var/www/html/index.html
執行systemctl restart httpd 而後再瀏覽器輸入 http://system1.example.com
5.配置虛擬主機www.example.com站點
mkdir /var/www/virtual
cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/
vim /etc/httpd/conf.d/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/var/www/virtual"
ServerName www.example.com
</VirtualHost>
:x 保存退出
執行systemctl restart httpd 而後再瀏覽器輸入http://www.example.com
6.www.example.com網站目錄訪問 域 和 用戶 控制 注意!紅色字體爲 域 控制語句
域訪問控制
<VirtualHost *:80>
DocumentRoot "/var/www/virtual"
ServerName www.example.com
<Directory /var/www/virtual/dwc>
<RequireAll>
Require all granted #容許全部主機訪問
Require local #只容許本地主機訪問
</RequireAll>
</Directory>
</VirtualHost> #因此這個配置只容許本地主機訪問dwc
<VirtualHost *:80>
DocumentRoot "/var/www/virtual"
ServerName www.example.com
<Directory /var/www/virtual/dwc>
<RequireAll>
Require all granted #容許全部主機訪問
Require ip 172.25.0.0/24 #容許172.25.0.0/24這個主機訪問 <<--填 網段 或者 ip
</RequireAll>
</Directory>
</VirtualHost> #因此這個配置只容許172.25.0.0/24這個域的主機訪問dwc
<VirtualHost *:80>
DocumentRoot "/var/www/virtual"
ServerName www.example.com
<Directory /var/www/virtual/dwc>
<RequireAll>
Require all granted #容許全部主機訪問
Require not ip 172.25.0.0/24 #拒絕172.25.0.0/24這個域的主機訪問 <<--填 網段 或者 i
</RequireAll>
</Directory>
</VirtualHost> #因此這個配置只拒絕172.25.0.0/24這個域的主機訪問dwc
用戶的訪問控制
首先創建Apache用戶口令文件:htpasswd -c /etc/httpd/passwd user1
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName system1.example.com
<Directory /var/www/html/test>
AuthType Basic
AuthName "***welcome! to ^_^ web-login!***" #web界面歡迎條文
AuthUserFile /etc/httpd/passwd #用戶口令文件存放路徑
Require valid-user
</Directory>
</VirtualHost> #此設置只允user1這個用戶訪問test頁面
基於ssl(https)的虛擬主機設置
首先 yum install -y mod_ssl
而後把crt和key文件放到對應目錄
<VirtualHost *:443> #!注意偵聽443端口
DocumentRoot "/var/www/html"
ServerName system1.example.com
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/system1.crt
SSLCertificateKeyFile /etc/pki/tls/private/system1.key
SSLCertificateChainFile /etc/pki/tls/certs/group1.crt
</VirtualHost>
動態網站非標準端口站點http://alt.example.com:8999
首先安裝動態網站插件 yum install -y mod_wsgi
listen 8909 注意偵聽8999端口
<VirtualHost *:8909>注意偵聽8999端口
WSGIScriptAlias / /var/www/wsgi/webapp.wsgi #wsgi腳本文件目錄
ServerName alt.example.com
</VirtualHost>
而後防火牆打開8999端口:
firewall-cmd --permanent --add-port=8999/tcp也能夠富規則
selinux也放行8999端口:
semanage port -a -t http_port_t -p tcp 8999
最後重啓服務 systemctl restart httpd
瀏覽器訪問 http://alt.example.com:8999
wsgi+https網站https://alt.example.com
<VirtualHost *:443>
WSGIScriptAlias / /var/www/wsgi/webapp.wsgi <----wsgi配置
ServerName alt.example.com
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/system1.crt
SSLCertificateKeyFile /etc/pki/tls/private/system1.key <---https配置
SSLCertificateChainFile /etc/pki/tls/certs/group1.crt</VirtualHost>