1. 首页 > 快讯

Nginx 入门指南

其实Nginx 入门指南的问题并不复杂,但是又很多的朋友都不太了解,因此呢,今天小编就来为大家分享Nginx 入门指南的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

1. Nginx的概念?

「什么是Nginx呢:」

  • Nginx是一个基于HTTP的反向代理服务器,也是一个基IMAP/POP3/SMTP服务邮件服务器
  • 反向代理服务器:现在我们A需要访问的目标B服务器的10.7.182.100,我要访问这个B服务器上的资源,现在如果使用了Nginx之后,我可以通过Nginx服务器从而达到访问10.7.182.100这个服务器的目的

  • IMAP/POP/SMTP:这三个是邮件的传输协议
  • 邮件服务器:发送邮件 接收邮件
  • Web服务器:本身是一个Web服务器的软件,类似于Tomcat这种Web服务的软件

「Nginx能干什么呢:」

  • 可以作为Web服务器
  • 可以作为邮件服务器
  • 可以作为反向代理的服务器
  • 动静分离(就是将动态资源和静态资源分隔开)
  • 可以实现负载均衡

 2、Nginx的安装

「Nginx安装步骤:」

  1. 第一步:下载我们的nginx 这里以1.6.2版本为例 
  2.  
  3. 第二步:共享安装文件到我们的linux上面 
  4.  
  5. 第三步:将文件拷贝到/usr/local下面 
  6.  
  7. 第四步:安装 tar -zxvf xxxx.tar.gz 
  8.  
  9. 第五步:下载所需要的依赖库 yum install pcre  yum install pcre-devel  yum install zlib   yum install zlib-devel 
  10.  
  11. 第六步:进行config的配置 
  12. cd nginx-1.6.2 && ./configure --prefix=/usr/local/nginx 
  13.  
  14. 第七步:安装 
  15.  
  16. make && make install  
  17.  
  18. 第八步:启动nginx 
  19.  
  20. /usr/local/nginx/sbin/nginx 
  21.  
  22. 关闭: .... -s stop -s reload  
  23.  
  24. 查看端口是否有问题 
  25.  
  26. netstat -tunpl |grep 80 
  27.  
  28. 浏览器进行验证没问题就可以 

3、Nginx的配置文件的解析 

「配置文件:」

  1. #user  nobody; 
  2. #工作的线程(4核8线程那么下面就设置成8 物理硬件有关) 
  3. worker_processes  1; 
  4.  
  5. #全局的错误日志存放的地方 
  6. #error_log  logs/error.log; 
  7.  
  8. #全局错误日志存放的地方 后面的notice表示的是输出错误日志的格式 
  9. #error_log  logs/error.log  notice; 
  10. #error_log  logs/error.log  info; 
  11.  
  12. #nginx进程号存放的地方 
  13. #pid        logs/nginx.pid; 
  14.  
  15.  
  16. #最大的连接数(这个也跟硬件是有关系的) 
  17. events { 
  18.     worker_connections  1024; 
  19.  
  20.  
  21. #下面就是跟HTTP请求有关系的了 
  22. http { 
  23.     #表示的是当前服务器支持的类型 
  24.     include       mime.types; 
  25.     #默认传输的数据类型是流  
  26.     default_type  application/octet-stream; 
  27.  
  28.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' 
  29.                       '$status $body_bytes_sent "$http_referer" ' 
  30.                       '"$http_user_agent" "$http_x_forwarded_for"'
  31.  
  32.     #表示的是每一次请求的日志记录 格式就是上面的main格式 
  33.     access_log  logs/access.log  main; 
  34.      
  35.     #是否可以发送文件 
  36.     sendfile        on
  37.     #tcp_nopush     on
  38.  
  39.     #这个是双活的超时的时间 
  40.     #keepalive_timeout  0; 
  41.     keepalive_timeout  65; 
  42.  
  43.     #是否打开文件的压缩 
  44.     #gzip  on
  45.  
  46.     #虚拟一个主机 
  47.     
  48.    #负载均衡的配置 
  49.    upstream qianyu { 
  50.       ip_hash; 
  51.       server 10.7.182.110:8080; 
  52.       server 10.7.182.87:8080; 
  53.    } 
  54.  
  55.     #server { 
  56.       # listen     90; 
  57.       # server_name localhost;  
  58.       # location / { 
  59.       #    root qianyu; 
  60.       #    index qianyu.html; 
  61.       # } 
  62.       #做一个反向代理 
  63.       #表示的是 如果你访问的后缀是 .jpg结尾的话那么 就访问下面的另外的服务器 
  64.        # location ~ \.jpg$ { 
  65.        #     proxy_pass   http://10.7.182.110:8080; 
  66.        # } 
  67.  
  68.       #下面要演示一个负载均衡的例子 
  69.        #location ~ \.jpg$ { 
  70.        #    proxy_pass   http://qianyu; 
  71.        #} 
  72.     #} 
  73.  
  74.    #虚拟一个动静分离的机器 
  75.    server { 
  76.      listen     9999; 
  77.      server_name localhost; 
  78.       
  79.      #表示的是动态资源访问的机器 
  80.  
  81.       location / { 
  82.             proxy_pass   http://10.7.182.54:8080; 
  83.       } 
  84.       
  85.   
  86.     #表示的是非  css和js文件访问的地址 
  87.     location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ 
  88.         { 
  89.             root /usr/local/webapp; 
  90.             expires 30d; 
  91.         } 
  92.       #表示的是css和js的访问地址 
  93.       location ~ .*\.(js|css)?$ 
  94.        { 
  95.          root /usr/local/webapp; 
  96.          expires 1h; 
  97.        } 
  98.  
  99.   } 
  100.  
  101.     #虚拟了服务器 
  102.     server { 
  103.         #端口是  80 
  104.         listen       80; 
  105.         #这个表示的是虚拟服务器默认访问的是本机 
  106.         server_name  localhost; 
  107.         #这个是虚拟服务器的编码 
  108.         #charset koi8-r; 
  109.         #当前服务器的日志的存储的地方 
  110.         #access_log  logs/host.access.log  main; 
  111.  
  112.         #做了一个地址的映射 
  113.         location / { 
  114.             root   html; 
  115.             index  index.html index.htm; 
  116.         } 
  117.          
  118.         #如果报404的时候访问的页面 
  119.         #error_page  404              /404.html; 
  120.  
  121.         # redirect server error pages to the static page /50x.html 
  122.         #报错50开头的是 就访问50x.html 
  123.         error_page   500 502 503 504  /50x.html; 
  124.         #下面对50x.html又做了一个映射  就访问根目录下的html中的  50x.html 
  125.         location = /50x.html { 
  126.             root   html; 
  127.         } 
  128.  
  129.         # proxy the PHP scripts to Apache listening on 127.0.0.1:80 
  130.         # 
  131.         #location ~ \.php$ { 
  132.         #    proxy_pass   http://127.0.0.1; 
  133.         #} 
  134.  
  135.         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
  136.         # 
  137.         #location ~ \.php$ { 
  138.         #    root           html; 
  139.         #    fastcgi_pass   127.0.0.1:9000; 
  140.         #    fastcgi_index  index.php; 
  141.         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name; 
  142.         #    include        fastcgi_params; 
  143.         #} 
  144.  
  145.         # deny access to .htaccess files, if Apache's document root 
  146.         # concurs with nginx's one 
  147.         # 
  148.         #location ~ /\.ht { 
  149.         #    deny  all
  150.         #} 
  151.     } 
  152.  
  153.  
  154.     # another virtual host using mix of IP-, name-, and port-based configuration 
  155.     # 
  156.     #server { 
  157.     #    listen       8000; 
  158.     #    listen       somename:8080; 
  159.     #    server_name  somename  alias  another.alias; 
  160.  
  161.     #    location / { 
  162.     #        root   html; 
  163.     #        index  index.html index.htm; 
  164.     #    } 
  165.     #} 
  166.  
  167.  
  168.     # HTTPS server 
  169.     # 
  170.     #server { 
  171.     #    listen       443 ssl; 
  172.     #    server_name  localhost; 
  173.  
  174.     #    ssl_certificate      cert.pem; 
  175.     #    ssl_certificate_key  cert.key
  176.  
  177.     #    ssl_session_cache    shared:SSL:1m; 
  178.     #    ssl_session_timeout  5m; 
  179.  
  180.     #    ssl_ciphers  HIGH:!aNULL:!MD5; 
  181.     #    ssl_prefer_server_ciphers  on
  182.  
  183.     #    location / { 
  184.     #        root   html; 
  185.     #        index  index.html index.htm; 
  186.     #    } 
  187.     #} 
  188.  

4、实现Nginx下的反向代理

「做一个反向代理:」

表示的是如果你访问的后缀是 .jpg结尾的话,那么就访问下面的另外的服务器

  1. location ~ \.jpg$ { 
  2.             proxy_pass   http://10.7.182.110:8080; 
  3.         } 

5、实现Nginx下的负载均衡

「第一种策略:默认是轮循的策略:」

  1. 配置upstream 
  2.    upstream qianyu { 
  3.       server 10.7.182.110:8080; 
  4.       server 10.7.182.87:8080; 
  5.    } 
  6.    配置负载均衡 
  7.    location ~ \.jpg$ { 
  8.            proxy_pass   http://qianyu; 
  9.    } 

「第二种策略:权重(weight):」

  1. #负载均衡的配置 
  2.   upstream qianyu { 
  3.      server 10.7.182.110:8080 weight=2; 
  4.      server 10.7.182.87:8080 weight=1; 
  5.   } 
  6.  配置负载均衡 
  7.      location ~ \.jpg$ { 
  8.            proxy_pass   http://qianyu; 
  9.      } 

「第三种策略:IPHash的使用:」

  1.  #负载均衡的配置 
  2.    upstream qianyu { 
  3.       ip_hash; 
  4.       server 10.7.182.110:8080; 
  5.       server 10.7.182.87:8080; 
  6.    } 
  7. 配置负载均衡 
  8.     location ~ \.jpg$ { 
  9.            proxy_pass   http://qianyu; 
  10.     } 

6、实现Nginx下的动静分离

「动静分离:」 

  • 简单的来说就是将动态资源和静态资源给分隔开
  • 静态资源放到Nginx服务器上
  • 动态资源放到Tomcat服务器上
  1. Jpg   html   css    png   gif    ....静态资源  ---->放到Nginx服务器上 
  2. .action结尾的都是动态的资源     ------------------------->放到Tomcat的服务器上 

「动静分离的实现:」

 

  • 在/usr/local目录下创建webapp文件夹
  • 在webapp目录下创建css、html、js、img文件夹
  • 编写HTML的内容并将html文件放到webapp目录下
  1. <!DOCTYPE html> 
  2. <html> 
  3.  <head> 
  4.   <meta charset="utf-8" /> 
  5.   <title></title> 
  6.   <link rel="stylesheet" type="text/css" href="/css/main.css"/> 
  7.   <script src="/js/main.js" type="text/javascript" charset="utf-8"></script> 
  8.  </head> 
  9.  <body> 
  10.   <img src="/img/bbb.jpg"/> 
  11.   <br /> 
  12.   <a href="/Dynamic_Resource/qianyu.action">点击我访问动态资源</a> 
  13.   
  14.  </body> 
  15. </html> 

  • 将图片放到img目录下,将css放到css目录下,将js文件放到js的目录下
  • 编写动态资源的这个工程
  1. package com.qy.servlet; 
  2.  
  3. import java.io.IOException; 
  4. import java.io.PrintWriter; 
  5.  
  6. import javax.servlet.ServletException; 
  7. import javax.servlet.http.HttpServlet; 
  8. import javax.servlet.http.HttpServletRequest; 
  9. import javax.servlet.http.HttpServletResponse; 
  10.  
  11. public class qianyuServlet extends HttpServlet { 
  12.  
  13.  public void doGet(HttpServletRequest request, HttpServletResponse response) 
  14.    throws ServletException, IOException { 
  15.             this.doPost(request, response); 
  16.  } 
  17.  
  18.  public void doPost(HttpServletRequest request, HttpServletResponse response) 
  19.    throws ServletException, IOException { 
  20.  
  21.   response.setContentType("text/html;charset=utf-8"); 
  22.   PrintWriter writer=response.getWriter(); 
  23.   writer.write("this is dynamic resource test"); 
  24.   writer.flush(); 
  25.   writer.close();  
  26.  } 
  • 编写配置文件 /conf/nginx.xml文件
  1. #虚拟一个动静分离的机器 
  2.    server { 
  3.      listen     9999; 
  4.      server_name localhost; 
  5.  
  6.      #表示的是动态资源访问的机器 
  7.  
  8.       location / { 
  9.             proxy_pass   http://10.7.182.54:8080; 
  10.       } 
  11.     #表示的是非  css和js文件访问的地址 
  12.     location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ 
  13.         { 
  14.             root /usr/local/webapp; 
  15.             expires 30d; 
  16.         } 
  17.       #表示的是css和js的访问地址 
  18.       location ~ .*\.(js|css)?$ 
  19.   { 
  20.          root /usr/local/webapp; 
  21.          expires 1h; 
  • 测试

7、虚拟主机

「虚拟主机配置:」

  1. server { 
  2.        listen     90; 
  3.        server_name localhost; 
  4.        location / { 
  5.           root qianyu; 
  6.           index qianyu.html; 
  7.        } 
  8.       #做一个反向代理 
  9.       #表示的是 如果你访问的后缀是 .jpg结尾的话那么 就访问下面的另外的服务器 
  10.         location ~ \.jpg$ { 
  11.             proxy_pass   http://10.7.182.110:8080; 
  12.         } 

结语

 

Nginx 入门指南的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、Nginx 入门指南的信息别忘了在本站进行查找哦。

用户评论

你身上有刺,别扎我

学习nginx真的太重要了,配置个网站什么的都方便很多

    有10位网友表示赞同!

陌離

一直在想找个时间研究一下nginx,现在看到这个标题正好合适

    有15位网友表示赞同!

熏染

51CTO的博客质量一直都很高,这次这篇文章应该也有很多干货

    有12位网友表示赞同!

伱德柔情是我的痛。

搞懂nginx确实能提升服务器管理能力,一定要好好学习

    有7位网友表示赞同!

太易動情也是罪名

看标题感觉这篇分析比较全面,可以让我对nginx有一个系统的认识

    有8位网友表示赞同!

花海

对于想从事web开发的人来说,nginx太重要了,希望这篇文章能让我入门faster

    有17位网友表示赞同!

猫腻

很多时候网页加载慢都是nginx的问题,学习它应该能让网站跑更快

    有11位网友表示赞同!

心安i

以前只是知道nginx的名字,还没真正了解过它的功能,这篇文章很适合我

    有5位网友表示赞同!

红玫瑰。

看标题感觉涵盖的范围广,希望能从这篇文章里学到很多 nginx 常用技巧

    有11位网友表示赞同!

ok绷遮不住我颓废的伤あ

Nginx配置确实有点复杂,希望这篇文章能给我一些清晰的解释和指导

    有12位网友表示赞同!

抚涟i

学习一个新技术总是离不开权威的文章,51CTO的博客就是很好的选择

    有11位网友表示赞同!

强辩

了解nginx可以让我更好地维护网站服务器,提高工作的效率

    有18位网友表示赞同!

作业是老师的私生子

现在很多web应用都用到nginx,掌握它真是职场必备技能

    有7位网友表示赞同!

不识爱人心

看标题感觉很全面,应该能涵盖nginx的基础概念和高级用法

    有6位网友表示赞同!

旧事酒浓

学习nginx的最佳途径就是实践,这篇文章或许能让我的实践更有目标性的

    有10位网友表示赞同!

微信名字

之前遇到过很多nginx使用问题,希望这篇文章能解决我对它的疑惑

    有13位网友表示赞同!

我绝版了i

这篇文章的讲解应该很入门友好,适合新手学习 nginx

    有10位网友表示赞同!

安陌醉生

51CTO的文章质量都很高,这次也不例外,相信这篇nginx解析会很棒!

    有6位网友表示赞同!

北染陌人

对web开发很有兴趣的人一定不能错过这篇文章!

    有15位网友表示赞同!

念安я

期待看看这篇文章能分享哪些干货!

    有6位网友表示赞同!

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/6864.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666