经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
Nginx 学习
来源:cnblogs  作者:迷途者寻影而行  时间:2021/4/19 8:50:12  对本文有异议

一、什么是nginx

1、nginx基本概念

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,占有内存少,并发能力强,能接受高负载。

2、反向代理

(1)、正向代理

用户无法访问某网站,但是可以访问代理服务器,代理服务器可以访问目标网站,用户配置代理服务器让
代理服务器对目标网站进行访问,并把结果返回给用户 (老打工人了)


(2)、反向代理

用户访问代理服务器,代理服务器去访问目标资源,处理返回结果给用户,从外部看用户不知道是否有代理服务器以为是一个服务器,暴漏的是代理服务器,隐藏了访问的资源服务器

3、负载均衡

负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。

4、动静分离

有专门的服务器放静态资源。用户请求静态资源时nginx就去静态资源服务器查找。加快了网站的解析速度,降低单个服务器的压力

二、Nginx安装、常用命令、配置文件

1、Nginx安装

  1. 1、下载nginx
  2. 2、解压nginx
  3. 3$sudo apt-get install libpcre3 libpcre3-dev zlib1g-dev //安装依赖库
  4. 4、./configure
  5. 5make && make install //编译并且安装
  6. *安装成功后 usr/local 会多出一个nginx文件 nginx里有sbinsbin里面有启动脚本
  7. 相关命令:
  8. ps -e | grep nginx //查看是否启动nginx
  9. netstat -ltunp //查看占用的端口号等详细信息
  10. ----防火墙默认无法访问,添加规则开放端口即可

2、Nginx常用命令

  1. *使用ngin常用密令要在 /usr/local/nginx/sbin 中使用
  2. ./nginx -v //查看nginx版本号
  3. ./nginx //启动
  4. ./nginx -s stop //关闭
  5. ./nginx -s reload //重新加载(比如conf的配置文件)

3、Nginx配置文件

  1. *nginx配置文件在 /usr/local/nginx/conf nginx配置文件分为三块
  2. 1、全局块
  3. 全局开始到events结束为全局快,主要设置一些影响nginx服务器整体运行的配置指令 例:worker_processes 1;
  4. nginx处理并发的数量,值越大处理的并发也越多(会受到硬件影响)
  5. 2events
  6. 影响nginx服务器与用户的网络连接 例:worker_connections 1024; 表示nginx用户最大连接数量
  7. 3http
  8. 又包括 http全局块 server 是配置最频繁的部分(高可用,负载均衡,动静分离都要在这配置)可以嵌套多个
  9. server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使
  10. sendfile传输文件,连接超时时间,单连接请求数等。
  11. server全局块:配置虚拟主机的相关参数,一个http中可以有多个server
  12. location块:配置请求的路由,以及各种页面的处理情况。

三、Nginx配置示例-反向代理

  1. 实例一、反向代理
  2. 1、修改配置文件
  3. server {
  4. listen 80;
  5. server_name localhost //nginx地址;
  6. location / {
  7. root html;
  8. //添加proxy_pass +http://项目地址
  9. proxy_pass http://localhost:428;
  10. index index.html index.htm;
  11. }
  12. }
  13. 实例二、反向代理(根据访问路径跳转不同端口)
  14. 1、部署两个tomcattom1deva.htmltom2vodb.html,并开放端口
  15. 2、修改配置文件
  16. server {
  17. listen 80;
  18. server_name localhost //nginx地址;
  19. location ~ /edu/ {
  20. proxy_pass http://localhost:8080
  21. }
  22. location ~ /vod/ {
  23. proxy_pass http://localhost:8081
  24. }
  25. }
  26. location使用正则表达式
  27. location   =   /uri       =开头表示精确前缀匹配,只有完全匹配才能生效。
  28. location   ^~   /uri      ^~开头表示普通字符串匹配上以后不再进行正则匹配。
  29. location   ~   pattern     ~开头表示区分大小写的正则匹配。
  30. location   ~*   pattern    ~*开头表示不区分大小写的正则匹配。
  31. location   /uri           不带任何修饰符,表示前缀匹配。
  32. location   /             通用匹配,任何未匹配到其他location的请求都会匹配到。
  33. 注意:
  34. 正则匹配会根据匹配顺序,找到第一个匹配的正则表达式后将停止搜索。普通字符串匹配则无视顺序,只会选择最精确的匹配。

四、Nginx配置实例-负载均衡(增加服务器,平摊访问)

  1. 1、修改文件
  2. http下添加:
  3. upstream 服务名字{
  4. server 192.168.1.1:8080;
  5. server 192.169.1.1:8080;
  6. }
  7. 配置server {
  8. listen 80;
  9. server_name 192.168.1.1 //nginx地址;
  10. location / {
  11. proxy_pass http://服务名字;
  12. }
  13. }
  14. 2、负载均衡策略
  15. ·轮询(默认)
  16. 按照时间顺序进行分配,服务器宕机自动剔除。
  17. ·weight
  18. 默认为1,权重越高被分配的客户端越多,就是按比例分配
  19. 例:
  20. upstream 服务名字{
  21. server 192.168.1.1:8080 weight=5;
  22. server 192.169.1.1:8080 weight=10;
  23. }
  24. ·ip_hash
  25. 大白话就是,按照你的ip地址来,你的ip分到服务器1以后你访问都是服务器1可解决session问题
  26. 例:
  27. upstream 服务名字{
  28. ip_hash
  29. server 192.168.1.1:8080;
  30. server 192.169.1.1:8080;
  31. }
  32. ·fair(第三方)按照后端访问时间,那个服务器相应快那个先给用户访问
  33. 例:
  34. upstream 服务名字{
  35. server 192.168.1.1:8080;
  36. server 192.169.1.1:8080;
  37. fair
  38. }

五、Nginx配置示例-动静分离

  1. *常用方式单独域名存放静态资源。
  2. location /www/ {
  3. root /data/;
  4. }
  5. location /image/ {
  6. root /data/;
  7. autoindex on; //显示文件列表
  8. }

六、Nginx配置高可用集群

((主从模式))解决nginx宕机就是高可用。。。。
需要2台nginx服务器
需要keeplived
需要虚拟ip地址

  1. 1、两台服务器都装上nginx服务器
  2. 2、两台服务器安装keeplived
  3. 安装后 etc 下会生成keeplived目录,里面包含keeplived配置文件keeplived.conf
  4. 配置keeplived,并且配置脚本
  5. 3、然后就高可用了

原文链接:http://www.cnblogs.com/pkkyh/p/14631347.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号