apache虛擬主機配置及解析

Apache虛擬主機配置及解析javascript

1.修改httpd-vhosts.conf

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

<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>html

<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>java

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

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

web

# 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.htmlapache



 


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 虛擬主機的配置文件vim


虛擬主機配置文件 (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、日誌輪詢
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

3、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 表示已經壓縮

4、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.在更新文件上採起策略,如更新後使用新的文件名發佈,這樣對用戶又是新的資源了


5、更改apache的默認用戶
編譯安裝apache的用戶是daemon
yum安裝apache的用戶的apache
儘量的將用戶更名,最好用你們都不知道用戶名


6、worker模式 提高併發數(能夠達到4500,網友測試結果)
編譯安裝時,使用worker模式


7、屏蔽apache版本等敏感信息
客戶訪問時不知道用的是什麼版本的服務器,減小攻擊
修改httpd-default.conf文件,ServerSignature off 和ServerTokens Prod
以後 apachectl graceful 使之生效
但仍是會出現server=Apache 字樣,若是想所有屏蔽,則須要重新編譯


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


9、修改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


10、apache的防盜鏈功能
本身全部的圖片,不容許嵌套在別人的網頁裏面


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


12、禁止用戶重載
AllowOverride Nore


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


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

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


十7、apache日誌授予root 700權限


十8、內核優化 系統優化


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

 

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

相關文章
相關標籤/搜索