文章目錄
Apache的作用
- 在web被訪問時通常使用**http://**的方式
- http:// 超文本傳輸協議
- http:// 超文本傳輸協議提供軟件:
- Apache
- nginx
- stgw
- jfe
- Tengine
Apache的安裝
dnf install httpd.x86_64 -y
Apache的啓動
systemctl enable --now httpd
開啓服務並設定服務位開機啓動
firewall-cmd --list-all
查看火牆信息firewall-cmd --permanent --add-service=http
在火牆中永久開啓http訪問firewall-cmd --permanent --add-service=https
在火牆中永久開啓https訪問firewall-cmd --reload
刷新火牆使設定生效
Apache的基本信息
- 服務名稱: httpd
- 配置文件:
/etc/httpd/conf/httpd.conf
主配置文件/etc/httpd/conf.d/*.conf
子配置文件- 默認發佈目錄:
/var/www/html
- 默認發佈文件:
index.html
- 默認端口:
- 80 http
- 443 https
- 用戶: apache
- 日誌:
/etc/httpd/logs
Apache的基本配置
Apache端口修改
vim /etc/httpd/conf/httpd.conf
Listen 6666
更改端口netstat -antlupe | grep httpd
查看端口
- 此時發現一個問題:將端口改爲8080後,無法訪問了,因爲防火牆沒有允許8080端口:
firewall-cmd --permanent --add-port=8080/tcp
添加8080端口firewall-cmd --reload
重載火牆
- 有一些端口設定之後會出現一些問題,比如設置Listen=6666
semanage port -l | grep http
查看允許使用的端口semanage port -a -t http_port_t -p tcp 8080
添加允許使用的端口systemctl restart httpd
重啓服務
默認發佈文件
vim /var/www/html/index.html
(默認發佈文件)- 然後進去編輯,再用瀏覽器訪問,就可以看到編輯的頁面
vim /etc/httpd/conf/httpd.conf
(更改默認發佈文件)- DirectoryIndex westos.html index.html
systemctl restart httpd
默認發佈目錄
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/westos/html"
<Directory "/westos/html">
Require all granted
</Directory>//授權所有人可以訪問/westos/html
semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
更改/westos的安全上下文,改成和默認目錄/var/www
相同restorecon -RvvF /westos/
重載安全上下文systemctl restart httpd
重啓服務- firefox http://
192.168.1.21
用瀏覽器訪問
Apache的訪問控制
- 實驗素材
mkdir /var/www/html/westos
vim /var/www/html/westos/index.html
<h1>westosdir's page</h1>
- firefox http://
192.168.1.21/westos
訪問剛纔建立的文件夾
1.基於客戶端ip的訪問控制
- 設置ip白名單
<Directory "/var/www/html/westos">
Order Deny,Allow
Allow from 192.168.1.20
Deny from All
</Directory>
-設置ip黑名單
<Directory "/var/www/html/westos">
Order Allow,Deny
Allow from All
Deny from 192.168.1.20
</Directory>
2.基於用戶認證
vim /etc/httpd/conf/httpd.conf
主配置文件
<Directory "/var/www/html/westos">
AuthUserfile /etc/httpd/htpasswdfile ##指定認證文件(自己寫的)
AuthName "Please input your name and password" ##認證提示語
AuthType basic ##認證類型
Require user admin ##允許指定認證用戶通過認證 2選1
Require valid-user ##允許指定認證文件中的所有用戶通過認證 2選1
</Directory>
htpasswd -cm /etc/httpd/htpasswdfile admin
生成認證文件,admin用戶是自己寫的
注意:- 當
/etc/httpd/htpasswdfile
存在那麼在添加用戶時不要加-c參數,否則會覆蓋源文件內容
- 此時訪問192.168.1.21,需要用戶認證
Apache的虛擬主機
mkdir -p /var/www/westos.com/{news,wenku}
建立wenku news兩個目錄vim /var/www/westos.com/wenku/index.html
編輯wenku的發佈文件
wenku.westos.com's page
vim /var/www/westos.com/news/index.html
編輯news的發佈文件
news.westos.com's page
vim /var/www/html/index.html
編輯默認的發佈文件
default westos's page
vim /etc/httpd/Vhost.conf
<VirtualHost _default_:80>
DocumentRoot "/var/www/html"
CustomLog logs/default.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName wenku.westos.com
DocumentRoot "/var/www/westos.com/wenku"
CustomLog logs/wenku.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName news.westos.com
DocumentRoot "/var/www/westos.com/news"
CustomLog logs/news.log combined
</VirtualHost>
- 注意: customlog 後的
logs/
並不是 絕對路徑,而是相對路徑,本來是/etc/httpd/logs
- 測試:
- 在瀏覽器所在主機中
vim /etc/hosts
192.168.1.21 www.westos.com wenku.westos.com news.westos.com
- firefox
http://www.westos.com
- firefox
http://wenku.westos.com
- firefox
http://news.westos.com
- 中途出現問題可以看apache的手冊
dnf install httpd-manual -y
安裝手冊- firefox
http://192.168.1.21/manual
查看手冊,不過是全英文的,若看不懂的話,可直接在百度搜索apache中文手冊
Apache的語言支持
php
vim /var/www/html/index.php
<?php
phpinfo();
?>#php的測試頁面
dnf install php -y
安裝phpsystemctl restart httpd
重啓httpd服務- firefox
http://192.168.0.11/index.php
cgi
mkdir /var/www/html/cgidir
vim /var/www/html/cgidir/index.cgi
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;##注意此時爲反單引號
vim /etc/httpd/conf.d/VirtHost.conf
<Directory "/var/www/html/cgidir">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
- firefox
http://192.168.0.11/cgidir/index.cgi
Apache的加密訪問
openssl genrsa -out /etc/pki/tls/private/www.westos.com.key 2048
生成私鑰- 生成證書籤名文件
openssl req -new -key /etc/pki/tls/private/www.westos.com.key \ -out /etc/pki/tls/certs/www.westos.com.csr ##生成證書籤名文件
- 生成證書
openssl x509 -req -days 365 -in /etc/pki/tls/certs/www.westos.com.csr
-signkey /etc/pki/tls/private/www.westos.com.key
-out/etc/pki/tls/certs/www.westos.com.crt #生成證書
x509
證書格式-req
請求-in
加載簽證名稱-signkey /etc/pki/tls/private/www.westos.com.key
vim /etc/httpd/conf.d/ssl.conf
編輯證書文件
firefox http://192.168.1.21
瀏覽器訪問並且查看證書
vim /etc/httpd/conf.d/Vhost.conf
<VirtualHost *:80>
ServerName login.westos.com
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 ##給用戶輸入的地址前面加上https://
</VirtualHost>
<VirtualHost *:443>
ServerName login.westos.com
DocumentRoot "/www/westos.com/login"
CustomLog logs/login.log combined
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
</VirtualHost>
systemctl restart httpd
^(/.*)$
客戶地址欄中輸入的地址%{HTTP_HOST}
客戶主機$1
RewriteRule後面跟的第一串字符的值
- ***注意:***給路徑授權時可以在
/etc/httpd/conf/httpd.conf
,也可以在/etc/httpd/conf.d/Vhost.conf
- 格式爲:
<Directory "路徑">
Require all granted
</Directory>
Squid+Apache
squid 正向代理
- 實驗環境:
- 單網卡主機設定ip不能上網
- 雙網卡主機設定ip1可以連接單網卡主機,設定ip2可以上網(ip和ip2網段相同,可以互通)
- 實驗效果:讓單網卡主機不能上網但瀏覽器可以訪問互聯網頁
- 我設置的是單網卡主機IP=
172.25.254.11
- 雙網卡:IP1=
192.168.1.30
IP2=172.25.254.13
- 操作:
- 在雙網卡主機中
dnf install squid -y
vim /etc/squid/squid.conf
59 http_access allow all
65 cache_dir ufs /var/spool/squid 100 16 256
systemctl restart squid
firewall-cmd --permanent --add-port=3128/tcp
firewall-cmd --reload
- 在單網卡專輯中選擇
- NetWork Proxy(瀏覽器中設置)
- 172.25.254.13 3128
- 測試:
- 在單網卡主機中
ping www.baidu.com
不通- 在瀏覽器中
訪問www.baidu.com
可以
squid反向代理
- 實驗環境:
192.168.1.21
Apache服務器192.168.1.12 squid
,沒有數據負責緩存vim /etc/squid/squid.conf
http_port 80 vhost vport
vhost
支持虛擬域名vport
支持虛擬端口- 當192.168.1.30的80端口被訪問會從192.168.1.21的80端口緩存數據
cache_peer 192.168.1.21 parent 80 0 proxy-only
systemctl restart squid
- 測試:
- firefox http://192.168.1.30
- 訪問看到的時192.168.1.21上的數據