HTTP服務搭建

来源:http://www.cnblogs.com/george-guo/archive/2017/06/26/7079862.html
-Advertisement-
Play Games

一、簡介 1、認識 加密網頁(https): tcp:443 明文網頁(http): tcp:80 survey.netcraft.net --這個網站上可以查到最新的網站伺服器的使用率 超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網 ...


一、簡介 1、認識 加密網頁(https): tcp:443      明文網頁(http): tcp:80 survey.netcraft.net         --這個網站上可以查到最新的網站伺服器的使用率 超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網路協議。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是為了提供一種發佈和接收HTML頁面的方法 2、Apache Apache HTTP Server(簡稱Apache)是Apache軟體基金會的一個開放源碼的網頁伺服器,可以在大多數電腦操作系統中運行,由於其多平臺和安全性被廣泛使用,是最流行的Web伺服器端軟體之一,其特點如下: 1、支持最新的HTTP/1.1通信協議 2、擁有簡單而強有力的基於文件的配置過程 3、支持通用網關介面 4、支持基於IP和基於功能變數名稱的虛擬主機 5、支持多種方式的HTTP認證 6、集成Perl處理模塊 7、集成代理伺服器模塊 8、支持實時監視伺服器狀態和定製伺服器日誌 9、支持伺服器端包含指令(SSI) 10、支持安全Socket層(SSL) 11、提供用戶會話過程的跟蹤 12、支持FastCGI 13、通過第三方模塊可以支持JavaServlets 3、安裝: www.apache.org --apache 官網 # yum install httpd* --安裝httpd服務 # httpd -t --檢查配置文件正確性 # rm -rf /etc/httpd/conf.d/welcome.conf --刪除歡迎界面;因為安裝了 httpd-manual ,故可以訪問 http://ServerIp/manual   4、運行於兩種模式:prefork,worker prefork模式: prefork是Unix平臺上的預設(預設)MPM,使用多個子進程,每個子進程只有一個線程。每個進程在某個確定的時間只能維持一個連接,效率高,但記憶體占用量比較大。 這個多路處理模塊(MPM)實現了一個非線程型的、預派生的web伺服器,它的工作方式類似於Apache 1.3。它適合於沒有線程安全庫,需要避免線程相容性問題的系統。它是要求將每個請求相互獨立的情況下最好的MPM,這樣若一個請求出現問題就不會影響到其他請求。 worker模式: worker使用多個子進程,每個子進程有多個線程,每個線程在某個確定的時間只能維持一個連接,記憶體占用量比較小,適合高流量的http伺服器。缺點是假如一個線程崩潰,整個進程就會連同其任何線程一起”死掉”,所以要保證一個程式在運行時必須被系統識別為”每個線程都是安全的”。 此多路處理模塊(MPM)使網路伺服器支持混合的多線程多進程。由於使用線程來處理請求,所以可以處理海量請求,而系統資源的開銷小於基於進程的MPM。但是它也使用了多進程,每個進程又有多個線程,以獲得基於進程的MPM的穩定性。 # httpd -l --查看運行模式,預設為 prefork.c # mv -v /usr/sbin/httpd{,.prefork} --備份prefork模式 # mv -v /usr/sbin/httpd{.worker,} --使用worker模式   二、配置文件詳解 1、全局環境參數 ServerTokens OS --當伺服器響應主機頭(header)信息時顯示Apache的版本和操作系統名稱 ServerRoot "/etc/httpd" --伺服器的基礎目錄,一般來說它將包含conf/和logs/子目錄,其它配置文件的相對路徑即基於此目錄。 PidFile run/httpd.pid --第一個httpd進程(所有其他進程的父進程)的進程號文件位置。 Timeout 60 --若60秒後沒有收到或送出任何數據就切斷該連接 KeepAlive Off --預設不使用保持連接的功能,即客戶一次請求連接只能響應一個文件,建議允許 MaxKeepAliveRequests 100 --在保持連接功能時,設置客戶一次請求連接能響應文件的最大上限,超過就斷開 KeepAliveTimeout 15 --在使用保持連接功能時,兩個相鄰的連接的時間間隔超過15秒,就切斷連接 ................. Listen 80 --伺服器監聽的埠號;監聽埠可以多開 Include conf.d/*.conf --將/etc/httpd/conf.d目錄下所有以conf結尾的配置文件包含進來 User apache --提供服務的子進程的用戶 Group apache --提供服務的子進程的用戶組 ServerAdmin [email protected] --管理員的郵件地址 ServerName mail.george.com:80 --主站點名稱(網站的主機名) UseCanonicalName Off DocumentRoot "/var/www/html" --設置Web文檔根目錄;但是可以使用符號鏈接和別名來指向到其他的位置;如不是絕對路徑,則被假定為是相對於ServerRoot的路徑 2、路徑控制參數 DirectoryIndex index.html index.html.var --網站預設網頁文件名,左邊優先 AccessFileName .htaccess --指定保護目錄配置文件的名稱 --------------------------------------------------------------------------------------------------------- <Directory Directory-path> --用於封裝一組指令,使之僅對某個目錄及其子目錄生效。針對文件系統上的一個目錄 Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all Deny from 192.168.133.22 </Directory> Directory-path --可以是一個目錄的完整路徑,或是包含了Unix shell匹配語法的通配符字元串。在通配符字元串中,"?"匹配任何單個的字元,"*"匹配任何字元序列。也可以使用"[]"來確定字元範圍。在"~" 字元之後也可以使用正則表達式 Options --這個指令的值可以是“None”,“All”,或者下列選項的任意組合:Indexes(前面有'-',則關閉網站列目錄的功能,無則反之);Includes;FollowSymLinks;SymLinksifOwnerMatch;ExecCGI;MultiViews AllowOverride --控制那些被放置在.htaccess文件中的指令。它可以是All,None(看不到任何.htaccess里的任何配置),或者下列指令的組合:Options;FileInfo;AuthConfig;Limit Order,Allow,Deny --控制誰可以獲得服務。oreder的參數最終以右邊的為準,順序可以逆轉 --------------------------------------------------------------------------------------------------------- <Directory "/www/images"> <Files ~ "\.jpg$"> --針對指定的文件可以是是在某個Directory下,也可以全局的 Order deny,allow Allow from all </Files> </Directory> --------------------------------------------------------------------------------------------------------- <Location /server-status> -- 允許使用URL"http://servername/server-status"的形式查看伺服器狀態(或是信息);Location主要是控制URL SetHandler server-status(server-info) Order deny,allow Allow from all </Location> --------------------------------------------------------------------------------------------------------- Alias /url-path /filesystem-path --把URL映射到文件系統路徑;(也可以自己在系統上使用 ln -s 軟鏈接實現哦) <Directory "/filesystem-path"> </Directory> 3、目錄訪問進行用戶密碼控制(非系統用戶) <Directory "/var/www/html"> --理論也可以在Location,file Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all authname "Authenticate yourself"   --瀏覽器打開該url的提示語 authtype basic authuserfile /etc/httpd/userpasswd   --用戶&密碼文件位置 require valid-user </Directory> # htpasswd -c /etc/httpd/userpasswd frank --創建一個允許訪問用戶 # htpasswd /etc/httpd/userpasswd george --再創建一個,記得 '-c' 參數,是為了創建該密碼文件,只能創建第一個用戶時使用。 註意:如果一個目錄使用密碼控制訪問,那麼在通過網頁瀏覽器列出該目錄的父目錄時,看不到該目錄,也就是說,該目錄被隱藏了。但是可以通過直接輸入url來訪問(即使你有賬戶和密碼也一樣)。 4、基於功能變數名稱的虛擬主機 NameVirtualHost *:80 --添加這條配置,將80埠設置為虛擬主機埠 <VirtualHost *:80> --第一個虛擬主機 ServerName www.george.com DocumentRoot /var/www/html/ <Directory "/var/www/html"> .................. </Directory> </VirtualHost>   <VirtualHost *:80> --第二個虛擬主機 ServerName mail.george.com DocumentRoot /var/www/cgi-bin/openwebmail/ ScriptAlias /mail /var/www/cgi-bin/openwebmail/openwebmail.pl <Location /> ...................... </Location> </VirtualHost>    該實驗的 SeverName 參數接IP地址的話,我們也可以做基於IP的虛擬主機 5、日誌參數 ErrorLog logs/error_log --錯誤日誌的存方位置 LogLevel warn --定義錯誤日誌等級,include: debug, info, notice, warn, error, crit, alert, emerg. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined .............. LogFormat "%{User-agent}i" agent --該四條是訪問日誌的預設格式 CustomLog logs/access_log combined --使用 combined 訪問日誌格式 %h –客戶端的ip地址或主機名 %l –The 這是由客戶端 identd 判斷的RFC 1413身份,輸出中的符號 "-" 表示此處信息無效。 %u –由HTTP認證系統得到的訪問該網頁的客戶名。有認證時才有效,輸出中的符號 "-" 表示此處信息無效。 %t –伺服器完成對請求的處理時的時間。 "%r" –引號中是客戶發出的包含了許多有用信息的請求內容。 %>s –這個是伺服器返回給客戶端的狀態碼。 %b –最後這項是返回給客戶端的不包括響應頭的位元組數。 "%{Referer}i" –此項指明瞭該請求是從被哪個網頁提交過來的。 "%{User-Agent}i" –此項是客戶瀏覽器提供的瀏覽器識別信息。 6、SSL加密配置 # yum install -y mod_ssl --安裝加密模塊 # vim /etc/httpd/conf.d/ssl.conf <VirtualHost *:443> ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log LogLevel warn SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES SSLCertificateFile /etc/pki/tls/certs/localhost.crt --配置公鑰文件 SSLCertificateKeyFile /etc/pki/tls/private/localhost.key --配置秘鑰文件 <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> ServerName www.george.com DocumentRoot /var/www/cgi-bin/openwebmail/ ScriptAlias /mail /var/www/cgi-bin/openwebmail/openwebmail.pl <Location /> SSLOptions +StdEnvVars Options Indexes order deny,allow Allow from all </Location> SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> 6.1、自己配置證書 # mkdir /etc/pki/test/ # cd /etc/pki/test # openssl genrsa -out /etc/pki/test/test.key 1024 --秘鑰 # openssl req -new -key test.key -out test.csr Country Name (2 letter code) [XX]:cn State or Province Name (full name) []:guangDong Locality Name (eg, city) [Default City]:Shenzhen Organization Name (eg, company) [Default Company Ltd]:IT Organizational Unit Name (eg, section) []:maintenance Common Name (eg, your name or your server's hostname) []:www.george.com Email Address []:[email protected] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:123456 An optional company name []:Azt # openssl req -x509 -days 365 -key test.key -in test.csr -out test.crt --公鑰 # ls --然後將下列 test.crt && test.key 配置到 /etc/httpd/conf.d/ssl.conf 即可 test.crt test.csr test.key
6.2、測試自己配置的證書 https://www.george.com/mail 但是我們自己創建的證書在瀏覽器中識別是不受信任的;證書狀態也是“由於CA 根證書不在“受信任的根證書頒發機構”存儲區中,所以它不受信任。”       

    需要我們自己在瀏覽器中手動將我們自己創建的證書(test.crt)導入到“受信任的根證書頒發機構”&&“受信任的發佈者”。以谷歌瀏覽器為列,步驟如下:

      

    接著,會再彈出幾個對話框,我們點擊“下一步”——“完成”——“是”。就 OK了。

   此時在使用瀏覽器打開我們的網站,查看證書的狀態“該證書沒有問題”。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原文地址:http://www.ttlsa.com/web/let infotify rsync fast/ 背景 我們公司在用inotify+rsync做實時同步,來解決分散式集群文件一致性的問題。但當web文件越來越多(百萬級數量html,jpg等小 文件),同步就越來越慢,根本做不到實時,按照 ...
  • " 探索Windows命令行系列(1):導航目錄 " " 探索Windows命令行系列(2):命令行工具入門 " " 探索Windows命令行系列(3):命令行腳本基礎 " " 探索Windows命令行系列(4):通過命令管理文件和文件夾 " " 探索Windows命令行系列(5):幾個實用的命令例 ...
  • Let's Encrypt免費又好用的證書,廢話不多說。 假設我的功能變數名稱為:163.org 1、克隆代碼 git clone https://github.com/letsencrypt/letsencrypt # 沒有git的先安裝git # yum install git # apt-get in ...
  • 1、回顧基礎命令 2、腳本 3、變數 4、別名 5、條件判斷 6、test判斷 一、回顧基礎命令 shutdown --關機/重啟 exit --退出當前shell rmdir --刪除空目錄 du --查看目錄占用的存儲空間 df --查看已 經掛載的文件系統的空間使用情況 ln --創建鏈接 c ...
  • 很多電腦愛好者對於Win10內置的PIN碼功能不太瞭解,很多朋友都還沒有使用。其實,創建PIN碼可以提到密碼使用,當你登錄到Windows和其它應用服務時,可以通過PIN碼替代輸入賬戶密碼,提升安全性。話不多說,以下是Win10開啟PIN碼設置使用教程,步驟如下。 一、從Win10左下角的開始菜單, ...
  • 對於游戲玩家來說,對顯卡的關註度要高於電腦其它硬體,一般來說,顯卡越好,游戲性能往往越強。不過要持續發揮顯卡的最佳游戲性能,經常更新顯卡驅動也是很有必要的。那麼筆記本顯卡驅動怎麼更新?下麵小編以自己的Win10筆記本為例,教大家如何升級筆記本顯卡驅動。 Win10筆記本顯卡驅動更新升級方法 升級筆記 ...
  • 1.下載最新的openssh包 http://www.openssh.com/portable.html#http 2.升級openssh之前要先打開伺服器telnet,通過telnet登錄伺服器,因為升級過程中會導致ssh暫時不能用 打開linux telnet服務: 查看telnet是否已經安裝 ...
  • 環境:筆記本 + 家用WIFI + 公司WIFI + VMware + CentOS6.8 + Xshell 問題描述:初學Linux時,用筆記本裝了虛擬機(單網卡),想實現linux在家和公司都能夠無線連網,但又不想上網地點變動之後每次手動輸入IP登錄Xshell。 解決思路:增加一塊網卡(eth ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...