apache虛擬主機配置及解析


Apache虛擬主機配置及解析

1.修改httpd-vhosts.conf

打開apache(Apache24)/conf/extra/httpd-vhosts.conf文件,添加虛擬主機信息,可以這只不同的域名指向不同的文件目錄

<VirtualHost *:80>
    ServerAdmin amyliyanice@163.com    # 服務管理員郵箱地址,出問題時發送郵件到這個郵箱
    DocumentRoot "D:/AppServ/www/wx"   # apache默認的站點目錄,路徑結尾不要添加斜線
    ServerName www.test.com            # 網站域名
    ServerAlias www.wx.dev             # 網站別名(可不填)
    ErrorLog "logs/wx.dev.log"         # 錯誤日志
   CustomLog "logs/wx.dev.log" common  # 自定義日志
</VirtualHost>

<Directory /> 根目錄(以下是對根目錄的限制)
Options FollowSymLinks FollowSymLinks表示允許符號鏈接,沒加選項表示禁止,如不允許目錄瀏覽等
AllowOverride None 表示禁止用戶對目錄配置文件(.htaccess進行修改)重載,普通站點目錄此項建議不開啟
Order deny,allow 允許未被明確拒絕的 (從后往前讀)
Deny from all 拒絕所有訪問
</Directory>

<Directory "/applications/apache2.2.31/htdocs"> 站點目錄(以下為默認站點目錄的限制,如果讀者私自配置了站點目錄而沒有配置這里就會出現 403錯誤)
Options Indexes FollowSymLinks FollowSymLinks表示允許符號鏈接,indexes表示允許目錄瀏覽,如允許目錄瀏覽,允許符號鏈接這里很危險,應禁止目錄瀏覽

應更改為 Options FollowSymLinks或Options -Indexes FollowSymLinks
AllowOverride None 表示禁止用戶對目錄配置文件(.htaccess進行修改)重載 盡量不開啟.htaccess 安全隱患大,規則多了網站訪問性能低
Order allow,deny 拒絕未被明確允許的 (從后往前讀)
Allow from all 所有人都能訪問
</Directory>

<IfModule dir_module>
DirectoryIndex index.html 索引文件 首頁文件(首頁文件可以有多個,可以用空格匹配多個,)
</IfModule>

<FilesMatch "^\.ht"> 阻止.htaccess 和 .htpasswd等重要文件被web用戶查看
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>

# Some examples: 出現不同的錯誤跳轉的指定頁面
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html



 


apache 擴展配置文件(Include 調用文件)在 /appacation/apache/conf/extra 下,不開啟就是默認配置。
extra/
├── httpd-autoindex.conf
├── httpd-dav.conf dav支持配置
├── httpd-default.conf 配置的是apache的相關服務參數,如超時時間,保持連接時間等
├── httpd-info.conf
├── httpd-languages.conf 語言支持模式
├── httpd-manual.conf
├── httpd-mpm.conf 服務器池管理,也就是優化apache的一個配置文件,選擇apache的模式以及配置連接數等,常用的模式有worker模式和profork模式,默 認情況是profork模式
├── httpd-multilang-errordoc.conf
├── httpd-ssl.conf 支持ssl加密的文件
├── httpd-userdir.conf
└── httpd-vhosts.conf 虛擬主機的配置文件


虛擬主機配置文件 (httpd-vhosts.conf)
egrep -v "^.*#|^$" httpd-vhosts.conf
NameVirtualHost *:80 表示基於名稱的虛擬主機配置,*表示監聽本機的所有IP地址,可以更改為具體的IP地址

<VirtualHost *:80>  定義一個虛擬主機,*表示監聽本機的所有IP地址,可以更改為具體的IP地址
ServerAdmin webmaster@dummy-host.example.com 配置管理員的郵箱
DocumentRoot "/applications/apache2.2.31/docs/dummy-host.example.com" 提供服務的程序目錄,也成站點目錄,如果不配置,則去主配置文件中尋找
ServerName dummy-host.example.com 提供服務的域名,測試需要在本機做hosts解析
ServerAlias www.dummy-host.example.com 虛擬主機的別名,也就是配置多個域名訪問同一個站點,此功能需要apache mod_alias模塊的支持
ErrorLog "logs/dummy-host.example.com-error_log" 配置錯誤日志的路徑
CustomLog "logs/dummy-host.example.com-access_log" common 配置訪問日志,一般用combined格式代替common格式,以獲得更多的格式輸出
</VirtualHost> 虛擬主機的結尾

 

2.設置hosts(不可缺少的一步)

打開C:\Windows\System32\drivers\etc\hosts文件添加域名解析

127.0.0.1 localhost
127.0.0.2 www.test.com 
127.0.0.3 www.nyy.dev

通過以上步驟,重啟apache就可以在本地通過不同的域名訪問不同的站點文件。

*apache錯誤:.htaccess: Invalid command ‘RewriteEngine’, perhaps misspelled or defined by a module not included in the server configuration.
錯誤解決方法 在apache的配置文件httpd.conf中將#LoadModule rewrite_module modules/mod_rewrite.so前的#去掉,再重啟服務器*

 

 

 

######################################################################################################
apache優化
一、日志輪詢
1.使用cronolog進行日志輪詢.之所以不使用系統自帶的rotatelogs,是因為切割日志時丟失日志。
2.使用復合日志(combined),顯示會多一些。
3.配置cronolog日志輪詢時,要寫全路徑,如 Customlog“|/usr/local/sbin/cronolog /application/apache/logs/access_www_%Y%m%d.log” combined

二。錯誤頁面優雅顯示
支持url、文件和腳本的形式。 配置方法 在主配置文件 寫入 ErrorDocument 404 /http://www/51cto.com 或者 ErrorDocument 404 /missing.html

三、mod_deflate 文件壓縮功能(壓縮發送給客戶端的內容)
以DSO方式安裝 /application/apache/bin/apxs -i -c -a mod_deflate.c
把文件先在服務器端進行壓縮,然后再傳輸,在客戶端再進行解壓。沒特殊情況,所有文本內容都應該是gzip壓縮。
把以下內容放在虛擬主機當中,就實現的壓縮功能:
<ifmodule mod_defalte.c>
DeflateCompressionlevel 9 #壓縮等級,等級也大,壓縮比例越高,相反耗CPU也高
SetOutputFilter DEFLATE #啟用壓縮
#DeflateFilterNote Input instream #在日志中放置壓縮率標記
#DeflateFilterNore Output outstream #在日志中放置壓縮率標記
AddOutputFilterByType DEFLATE text/html text/plain text/xml #以下三行設置壓縮的類型
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/css
#DeflateFilterNote Ratio ratio #在日志中放置壓縮率標記,下面是記錄日志的,這個功能一般不用,所以注釋掉了
#LogFormat '"%r" %{outsream}n/%{instream}n (%{ratio}n%%)' deflate
#Customlog logs/deflate_log.log deflate
</ifmodule>
使用curl命令,頭部信息會出現一行Vary: Accept-Encoding 表示已經壓縮

四、mod_expires 緩存功能
通過設置expires header 來緩存如:圖片,腳本,css,flash等,expires其實就是通過header報文來指定特定類型的文件在瀏覽器中的緩存時間,大多數的圖片,flash在發布后都是不需要經常修改的,做了緩存以后這樣瀏覽器就不會再從服務器下載這些文件而是直接從緩存中讀取
優點:
1,加大訪問頁面的速度 2,提升用戶體驗 3,節約網站帶寬成本 4,節約網站服務器及維護成本

 

<ifmodule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 12 month"
ExpiresByType test/html "access plus 12 months"
ExpiresByType test/scc "access plus 12 months"
ExpiresByType image/gif "access plus 12 months"
ExpiresByType image/jpeg "access plus12 12 months"
ExpiresByType image/jpg "access plus 12 months"
ExpiresByType image/png "access plus 12 months"
EXpiresByType application/x-shockwave-flash "access plus 12 months"
EXpiresByType application/x-javascript "access plus 12 months"
ExpiresByType video/x-flv "access plus 12 months"
</ifmodule>

expires失效條件:用戶主動刪除和內容緩存期已到

如果網站更新功能或者更新文件,用戶訪問時的內容還是舊的
1.一般將經常變化的設置時間短 如1-30天
2.在更新文件上采取策略,如更新后使用新的文件名發布,這樣對用戶又是新的資源了


五、更改apache的默認用戶
編譯安裝apache的用戶是daemon
yum安裝apache的用戶的apache
盡可能的將用戶改名,最好用大家都不知道用戶名


六、worker模式 提升並發數(可以達到4500,網友測試結果)
編譯安裝時,使用worker模式


七、屏蔽apache版本等敏感信息
客戶訪問時不知道用的是什么版本的服務器,減少攻擊
修改httpd-default.conf文件,ServerSignature off 和ServerTokens Prod
之后 apachectl graceful 使之生效
但還是會出現server=Apache 字樣,如果想全部屏蔽,則需要從新編譯


八、apache目錄文件權限的設置 (屬組root ,目錄755,文件644)
在網站架構中,應該把資源文件,包括用戶上傳的圖片,附件等和程序分離,最好把上傳的程序也分離,這樣就可以從容的授權了。
一般的公司授權:
chmod -R 777 /sitedir
chown -R apache.apache /sitedir 都不安全


九、修改apache的並發量等設置(默認apahce的並發量是150)
修改httpd.conf 打開Include conf/extra/httpd-mpm.conf 模塊

Apachef服務為worker模式的配置 vim /conf/extra/httpd-mpm.conf
<IfModule mpm_worker_module>
StartServers 5
MaxClients 2000
ServerLimit 25
MinSpareThreads 50
MaxSpareThreads 200
ThreadLimit 200
ThreadsPerChild 100
MaxRequestsPerchild 0
</IfModule>
注:
MaxClients <= ServerLimit * ThreadsPerChild

Apache服務為prefork模式的配置
生產環境配置文件 httpd-default.conf並發連接數配置

vim conf/extra/httpd-mpm.conf
StartServers 10
MinSpareServers 10
maxSpareServers 15
ServerLimit 2000
MaxClients 2000
MaxRequestsPerChild 10000


修改完並發數后,要stop apache 再start apache ,restart和graceful是不管用的 可能是bug


十、apache的防盜鏈功能
自己所有的圖片,不允許嵌套在別人的網頁里面


十一、禁止目錄Indexes
刪除Indexes 或者Indexes前加-


十二、禁止用戶重載
AllowOverride Nore


十三、關閉CGI
刪除或者關閉CGI


十四、避免使用.htaccess文件
首先是性能的考慮,如果AllowOverride啟用了.htaccess文件,則Apache需要在每個目錄中查找.htaccess文件,另外,對每一個請求,都需要讀取一次.htaccess文件因此會導致性能的下降。
其次是安全,這樣會允許用戶自己修改服務器的配置,這可能導致某些意想不到的修改,所以請認真考慮是否應當給予用戶這樣的特權

AccessFileName .htaccess
建議設置成:
#AccessFileName .htaccess
全部目錄權限定義使用httpd.conf中的定義,不使用.htaccess.


十七、apache日志授予root 700權限


十八、內核優化 系統優化


十九、apache程序架構優化
1.程序頁面服務器和 圖片附件服務器、上傳服務器 三者的功能盡量分離
2.分離最佳的方式是分別使用獨立的服務器(需要程序的支持)
3.次選方案是在前端負載均衡器通過haproxy/nginx 根據目錄或者擴展名,請求后面的對應服務器

 


————————————————
版權聲明:本文為CSDN博主「zypzilong」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zypzilong/article/details/77765429


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM