-
互聯(lián)網(wǎng)安全法,互聯(lián)網(wǎng)凈網(wǎng)行動(dòng)
-
”凈網(wǎng)2020”落實(shí)好維護(hù)網(wǎng)絡(luò)安全責(zé)任
-
關(guān)于端午節(jié)放假通知-宇眾網(wǎng)絡(luò)
-
宇眾網(wǎng)絡(luò)春節(jié)放假通知
-
關(guān)于公司收款銀行賬戶(hù)變更通知函-宇眾網(wǎng)絡(luò)
-
關(guān)于網(wǎng)上有人冒充我公司名義進(jìn)行詐騙的公告。
-
關(guān)于端午節(jié)放假通知,節(jié)日放假,但是我們業(yè)務(wù)不“放假”-宇眾網(wǎng)絡(luò)
-
工信部進(jìn)一步加強(qiáng)未備案網(wǎng)站管理工作的通知-宇眾網(wǎng)絡(luò)
-
關(guān)于東莞市宇眾網(wǎng)絡(luò)科技有限公司香港數(shù)據(jù)中心(香港機(jī)房)路由優(yōu)化通知
-
宇眾網(wǎng)絡(luò)慶祝五·一勞動(dòng)節(jié)快樂(lè)
-
東莞東城機(jī)房網(wǎng)絡(luò)升級(jí)通知
-
臨近過(guò)年,互聯(lián)網(wǎng)IDC貴圈也有被騙的,請(qǐng)認(rèn)準(zhǔn)宇眾網(wǎng)絡(luò)公司官方聯(lián)系方式
-
我司已獲得ISP/ICP/IDC三證資格,更好的為客戶(hù)服務(wù)
-
關(guān)于浙江金華高防機(jī)房網(wǎng)絡(luò)線(xiàn)路切割通知
-
工信部近日下發(fā)關(guān)于進(jìn)一步規(guī)范域名備案工作的通知
行業(yè)資訊
- 首頁(yè)
- 新聞中心
- 行業(yè)資訊
全面解析|搞懂Nginx這一篇就夠了
Nginx是一個(gè)http服務(wù)器,是一個(gè)使用c語(yǔ)言開(kāi)發(fā)的高性能的http服務(wù)器及反向代理服務(wù)器。Nginx是一款高性能的http服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器。由俄羅斯的程序設(shè)計(jì)師Igor Sysoev所開(kāi)發(fā),官方測(cè)試Nginx能夠支撐5萬(wàn)并發(fā)鏈接,并且cpu、內(nèi)存等資源消耗卻非常低,運(yùn)行非常穩(wěn)定。本文將為大家詳細(xì)介紹關(guān)于Nginx的原理以及在應(yīng)用場(chǎng)景下的相關(guān)解析。
1. Nginx的概念?
「什么是Nginx呢:」
- Nginx是一個(gè)基于HTTP的反向代理服務(wù)器,也是一個(gè)基IMAP/POP3/SMTP服務(wù)郵件服務(wù)器
- 反向代理服務(wù)器:現(xiàn)在我們A需要訪(fǎng)問(wèn)的目標(biāo)B服務(wù)器的10.7.182.100,我要訪(fǎng)問(wèn)這個(gè)B服務(wù)器上的資源,現(xiàn)在如果使用了Nginx之后,我可以通過(guò)Nginx服務(wù)器從而達(dá)到訪(fǎng)問(wèn)10.7.182.100這個(gè)服務(wù)器的目的
- IMAP/POP/SMTP:這三個(gè)是郵件的傳輸協(xié)議
- 郵件服務(wù)器:發(fā)送郵件 接收郵件
- Web服務(wù)器:本身是一個(gè)Web服務(wù)器的軟件,類(lèi)似于Tomcat這種Web服務(wù)的軟件
「Nginx能干什么呢:」
- 可以作為Web服務(wù)器
- 可以作為郵件服務(wù)器
- 可以作為反向代理的服務(wù)器
- 動(dòng)靜分離(就是將動(dòng)態(tài)資源和靜態(tài)資源分隔開(kāi))
- 可以實(shí)現(xiàn)負(fù)載均衡
2、Nginx的安裝
「Nginx安裝步驟:」
- 第一步:下載我們的nginx 這里以1.6.2版本為例
- 第二步:共享安裝文件到我們的linux上面
- 第三步:將文件拷貝到/usr/local下面
- 第四步:安裝 tar -zxvf xxxx.tar.gz
- 第五步:下載所需要的依賴(lài)庫(kù) yum install pcre yum install pcre-devel yum install zlib yum install zlib-devel
- 第六步:進(jìn)行config的配置
- cd nginx-1.6.2 && ./configure --prefix=/usr/local/nginx
- 第七步:安裝
- make && make install
- 第八步:啟動(dòng)nginx
- /usr/local/nginx/sbin/nginx
- 關(guān)閉: .... -s stop -s reload
- 查看端口是否有問(wèn)題
- netstat -tunpl |grep 80
- 瀏覽器進(jìn)行驗(yàn)證沒(méi)問(wèn)題就可以
3、Nginx的配置文件的解析
「配置文件:」
- #user nobody;
- #工作的線(xiàn)程(4核8線(xiàn)程那么下面就設(shè)置成8 物理硬件有關(guān))
- worker_processes 1;
- #全局的錯(cuò)誤日志存放的地方
- #error_log logs/error.log;
- #全局錯(cuò)誤日志存放的地方 后面的notice表示的是輸出錯(cuò)誤日志的格式
- #error_log logs/error.log notice;
- #error_log logs/error.log info;
- #nginx進(jìn)程號(hào)存放的地方
- #pid logs/nginx.pid;
- #最大的連接數(shù)(這個(gè)也跟硬件是有關(guān)系的)
- events {
- worker_connections 1024;
- }
- #下面就是跟HTTP請(qǐng)求有關(guān)系的了
- http {
- #表示的是當(dāng)前服務(wù)器支持的類(lèi)型
- include mime.types;
- #默認(rèn)傳輸?shù)臄?shù)據(jù)類(lèi)型是流
- default_type application/octet-stream;
- #聲明了一種日志格式 這種日志格式的名字叫做 main
- log_format main '$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" "$http_x_forwarded_for"';
- #表示的是每一次請(qǐng)求的日志記錄 格式就是上面的main格式
- access_log logs/access.log main;
- #是否可以發(fā)送文件
- sendfile on;
- #tcp_nopush on;
- #這個(gè)是雙活的超時(shí)的時(shí)間
- #keepalive_timeout 0;
- keepalive_timeout 65;
- #是否打開(kāi)文件的壓縮
- #gzip on;
- #虛擬一個(gè)主機(jī)
- #負(fù)載均衡的配置
- upstream qianyu {
- ip_hash;
- server 10.7.182.110:8080;
- server 10.7.182.87:8080;
- }
- #server {
- # listen 90;
- # server_name localhost;
- # location / {
- # root qianyu;
- # index qianyu.html;
- # }
- #做一個(gè)反向代理
- #表示的是 如果你訪(fǎng)問(wèn)的后綴是 .jpg結(jié)尾的話(huà)那么 就訪(fǎng)問(wèn)下面的另外的服務(wù)器
- # location ~ \.jpg$ {
- # proxy_pass http://10.7.182.110:8080;
- # }
- #下面要演示一個(gè)負(fù)載均衡的例子
- #location ~ \.jpg$ {
- # proxy_pass http://qianyu;
- #}
- #}
- #虛擬一個(gè)動(dòng)靜分離的機(jī)器
- server {
- listen 9999;
- server_name localhost;
- #表示的是動(dòng)態(tài)資源訪(fǎng)問(wèn)的機(jī)器
- location / {
- proxy_pass http://10.7.182.54:8080;
- }
- #表示的是非 css和js文件訪(fǎng)問(wèn)的地址
- location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
- {
- root /usr/local/webapp;
- expires 30d;
- }
- #表示的是css和js的訪(fǎng)問(wèn)地址
- location ~ .*\.(js|css)?$
- {
- root /usr/local/webapp;
- expires 1h;
- }
- }
- #虛擬了服務(wù)器
- server {
- #端口是 80
- listen 80;
- #這個(gè)表示的是虛擬服務(wù)器默認(rèn)訪(fǎng)問(wèn)的是本機(jī)
- server_name localhost;
- #這個(gè)是虛擬服務(wù)器的編碼
- #charset koi8-r;
- #當(dāng)前服務(wù)器的日志的存儲(chǔ)的地方
- #access_log logs/host.access.log main;
- #做了一個(gè)地址的映射
- location / {
- root html;
- index index.html index.htm;
- }
- #如果報(bào)404的時(shí)候訪(fǎng)問(wèn)的頁(yè)面
- #error_page 404 /404.html;
- # redirect server error pages to the static page /50x.html
- #報(bào)錯(cuò)50開(kāi)頭的是 就訪(fǎng)問(wèn)50x.html
- error_page 500 502 503 504 /50x.html;
- #下面對(duì)50x.html又做了一個(gè)映射 就訪(fǎng)問(wèn)根目錄下的html中的 50x.html
- location = /50x.html {
- root html;
- }
- # proxy the PHP scripts to Apache listening on 127.0.0.1:80
- #
- #location ~ \.php$ {
- # proxy_pass http://127.0.0.1;
- #}
- # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
- #
- #location ~ \.php$ {
- # root html;
- # fastcgi_pass 127.0.0.1:9000;
- # fastcgi_index index.php;
- # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
- # include fastcgi_params;
- #}
- # deny access to .htaccess files, if Apache's document root
- # concurs with nginx's one
- #
- #location ~ /\.ht {
- # deny all;
- #}
- }
- # another virtual host using mix of IP-, name-, and port-based configuration
- #
- #server {
- # listen 8000;
- # listen somename:8080;
- # server_name somename alias another.alias;
- # location / {
- # root html;
- # index index.html index.htm;
- # }
- #}
- # HTTPS server
- #
- #server {
- # listen 443 ssl;
- # server_name localhost;
- # ssl_certificate cert.pem;
- # ssl_certificate_key cert.key;
- # ssl_session_cache shared:SSL:1m;
- # ssl_session_timeout 5m;
- # ssl_ciphers HIGH:!aNULL:!MD5;
- # ssl_prefer_server_ciphers on;
- # location / {
- # root html;
- # index index.html index.htm;
- # }
- #}
- }
4、實(shí)現(xiàn)Nginx下的反向代理
「做一個(gè)反向代理:」
表示的是如果你訪(fǎng)問(wèn)的后綴是 .jpg結(jié)尾的話(huà),那么就訪(fǎng)問(wèn)下面的另外的服務(wù)器
- location ~ \.jpg$ {
- proxy_pass http://10.7.182.110:8080;
- }
5、實(shí)現(xiàn)Nginx下的負(fù)載均衡
「第一種策略:默認(rèn)是輪循的策略:」
- 配置upstream
- upstream qianyu {
- server 10.7.182.110:8080;
- server 10.7.182.87:8080;
- }
- 配置負(fù)載均衡
- location ~ \.jpg$ {
- proxy_pass http://qianyu;
- }
「第二種策略:權(quán)重(weight):」
- #負(fù)載均衡的配置
- upstream qianyu {
- server 10.7.182.110:8080 weight=2;
- server 10.7.182.87:8080 weight=1;
- }
- 配置負(fù)載均衡
- location ~ \.jpg$ {
- proxy_pass http://qianyu;
- }
「第三種策略:IPHash的使用:」
- #負(fù)載均衡的配置
- upstream qianyu {
- ip_hash;
- server 10.7.182.110:8080;
- server 10.7.182.87:8080;
- }
- 配置負(fù)載均衡
- location ~ \.jpg$ {
- proxy_pass http://qianyu;
- }
6、實(shí)現(xiàn)Nginx下的動(dòng)靜分離
「動(dòng)靜分離:」
- 簡(jiǎn)單的來(lái)說(shuō)就是將動(dòng)態(tài)資源和靜態(tài)資源給分隔開(kāi)
- 靜態(tài)資源放到Nginx服務(wù)器上
- 動(dòng)態(tài)資源放到Tomcat服務(wù)器上
- Jpg html css png gif ....靜態(tài)資源 ---->放到Nginx服務(wù)器上
- .action結(jié)尾的都是動(dòng)態(tài)的資源 ------------------------->放到Tomcat的服務(wù)器上
「動(dòng)靜分離的實(shí)現(xiàn):」
- 在/usr/local目錄下創(chuàng)建webapp文件夾
- 在webapp目錄下創(chuàng)建css、html、js、img文件夾
- 編寫(xiě)HTML的內(nèi)容并將html文件放到webapp目錄下
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <title></title>
- <link rel="stylesheet" type="text/css" href="/css/main.css"/>
- <script src="/js/main.js" type="text/javascript" charset="utf-8"></script>
- </head>
- <body>
- <img src="/img/bbb.jpg"/>
- <br />
- <a href="/Dynamic_Resource/qianyu.action">點(diǎn)擊我訪(fǎng)問(wèn)動(dòng)態(tài)資源</a>
- </body>
- </html>
- 將圖片放到img目錄下,將css放到css目錄下,將js文件放到j(luò)s的目錄下
- 編寫(xiě)動(dòng)態(tài)資源的這個(gè)工程
- package com.qy.servlet;
- import java.io.IOException;
- import java.io.PrintWriter;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class qianyuServlet extends HttpServlet {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- this.doPost(request, response);
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- response.setContentType("text/html;charset=utf-8");
- PrintWriter writer=response.getWriter();
- writer.write("this is dynamic resource test");
- writer.flush();
- writer.close();
- }
- }
- 編寫(xiě)配置文件 /conf/nginx.xml文件
- #虛擬一個(gè)動(dòng)靜分離的機(jī)器
- server {
- listen 9999;
- server_name localhost;
- #表示的是動(dòng)態(tài)資源訪(fǎng)問(wèn)的機(jī)器
- location / {
- proxy_pass http://10.7.182.54:8080;
- }
- #表示的是非 css和js文件訪(fǎng)問(wèn)的地址
- location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
- {
- root /usr/local/webapp;
- expires 30d;
- }
- #表示的是css和js的訪(fǎng)問(wèn)地址
- location ~ .*\.(js|css)?$
- {
- root /usr/local/webapp;
- expires 1h;
- 測(cè)試
7、虛擬主機(jī)
「虛擬主機(jī)配置:」
- server {
- listen 90;
- server_name localhost;
- location / {
- root qianyu;
- index qianyu.html;
- }
- #做一個(gè)反向代理
- #表示的是 如果你訪(fǎng)問(wèn)的后綴是 .jpg結(jié)尾的話(huà)那么 就訪(fǎng)問(wèn)下面的另外的服務(wù)器
- location ~ \.jpg$ {
- proxy_pass http://10.7.182.110:8080;
- }
- }