
您好,我是湘王,這是我的51CTO博客,歡迎您來,歡迎您再來~
HTTP服務器是相對于HTTP客戶端來說的——HTTP客戶端就是各種常用的「瀏覽器」,如IE、chrome、微信瀏覽器。
(資料圖片)
當瀏覽器通過URL地址欄訪問一個Web頁面時,會發送一連串請求,或者說HTTP服務器能懂的「語言」,告訴自己需要什么。
HTTP服務器通過解析「請求頭」,或者通過靜態頁面給出內容,或者將客戶端需要的內容通過編程語言「計算」出來,然后再返回給瀏覽器。
HTTP協議只是龐大的TCP/IP協議簇的一部分,HTTP服務器一般情況下是泛指解析包括HTTP協議在內的各種協議的Web服務器,如郵件、文件、DNS等。
如果沒特別說明,HTTP服務器和Web服務器通常是一個概念。
那什么是Web容器呢?
C#服務端用的IIS、PHP服務端用的Apache和Java服務端用的Tomcat都屬于Web服務器的范疇。但這里面又有不同——
Apache是純粹的Web服務器,而IIS和Tomcat除了要解析HTTP協議內容之外,還需要處理諸如靜態資源、解釋/執行JSP/ASP頁面標簽、組件生命周期等更「專業」的內容。
所以在HTTP服務器/Web服務器之上,把處理這些專業內容的服務稱為「容器」。
如果包括更為專業的「服務」,如事務管理、數據庫連接池、Bean注入等,則稱為「應用服務器」。
綜上所述:HTTP/Web服務器 < 容器 < 應用服務器
那什么又是代理呢?
官方的描述:Nginx是一個輕量級、高性能的HTTP和反向代理服務器,同時也提供IMAP/POP3/SMTP這類常見郵件服務。
輕量級、高性能、單線程、非阻塞異步工作模型,最大限度利用Linux本身提供的epoll多路復用技術,配置簡單靈活,模塊化結構,資源占有率低且利用率高。
說反向代理,就不得不說正向代理。正向代理位于客戶端與目標服務器之間,向客戶端隱蔽了具體的請求細節,向目標服務器隱蔽了客戶端身份,并在二者之間傳輸/轉發信息。
因此,Nginx的主要作用也就包括了:
1、作為HTTP/郵件服務器
2、作為反向代理服務器
3、作為負載均衡服務器
安裝Nginx:
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel
yum install -y openssl openssl-devel
cd ~
wget -c https://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
./configure
make && make install
默認安裝到/usr/local/nginx/目錄
啟動:
cd /usr/local/nginx/sbin/
./nginx# 啟動
./nginx -s stop# 停止
./nginx -s quit# 退出停止
./nginx -s reload# 重新加載配置文件
開機自啟動:
vi /etc/rc.local
增加一行
cd /etc
chmod 755 rc.local
安裝好Nginx之后,如果看到這個頁面就說明安裝成功:
當只有靜態資源的時候,也可以用Nginx來做服務器:
cd /home/work
mkdir www
vi index.html
重新寫一個新的index文件
修改/usr/local/nginx/conf/nginx.conf文件
將#user nobody;改為user root;
將
location / {
root html;
index index.html index.htm;
}
改為
location / {
root /home/work/www;
index index.html index.htm;
}
重新加載Nginx:
cd /usr/local/nginx/sbin/
./nginx -s reload
查看結果:
Nginx實現動靜分離也非常簡單:根據一定規則把不變的資源和經常變的資源區分開來,就可以根據靜態資源的特點將其做緩存或者CDN操作,這就是網站靜態化處理的核心思路。
增加新的location:
重新加載Nginx:
cd /usr/local/nginx/sbin/
./nginx -s reload
拷貝一幅圖片到/home/work/www目錄
訪問圖片的路徑:http://服務器/name.jpeg
和圖片類似,css、js等文件都可以這樣處理
Nginx最拿手的本事就是反向代理。以Java應用為例,一般都是以8080端口為入口,但如果想改為80端口,就可以用Nginx來「代理」。修改nginx.conf:
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host:$server_port;
}
}
編寫一個簡單的Java應用部署并測試。使用帶端口的地址(Tomcat):
??http://172.16.185.136:8080/api/v1.0.0/system/test?username=xiangwang??
或者不帶端口的地址(Nginx):
??http://172.16.185.136/api/v1.0.0/system/test?username=xiangwang??
都能成功訪問。
?
感謝您的大駕光臨!咨詢技術、產品、運營和管理相關問題,請關注后留言。歡迎騷擾,不勝榮幸~