Nginx使用介绍

前言
Nginx 是什么
Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。

一 安装使用

  • 1.1 linux系统安装:

Ubuntu: sudo apt install nginx
Centos: yum install nginx
自动安装的路径在/ect/nginx/
启动:sudo service nginx start
查看版本:sudo nginx -v
查看配置是否正确:sudo nginx -t

root@ubuntu:/# sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重读配置文件:nginx -s reload

完成配置 Nginx 后,运行 sudo nginx -t 来验证配置文件的语法。 如果配置文件测试成功,可以通过运行 sudo nginx -s reload 强制 Nginx 选取更改
也可以使用systemctl管理Nginx服务:
您可以像任何其他systemd单位一样管理Nginx服务。 要停止Nginx服务,请运行:
sudo systemctl stop nginx
要再次启动,请键入:
sudo systemctl start nginx
重新启动Nginx服务:
sudo systemctl restart nginx
在进行一些配置更改后重新加载Nginx服务:
sudo systemctl reload nginx
如果你想禁用Nginx服务在启动时启动:
sudo systemctl disable nginx
并重新启用它:
sudo systemctl enable nginx

  • 1.2 windows 系统上安装使用

到nginx官网(http://nginx.org/en/download.html
)上下载相应的安装包,解压即可。
启动:
直接点击Nginx目录下的nginx.exe 或者 cmd运行start nginx
关闭:
nginx -s stop 或者 nginx -s quit
stop表示立即停止nginx,不保存相关信息
quit表示正常退出nginx,并保存相关信息
重启(因为改变了配置,需要重启)
nginx -s reload
查看配置是否正确: nginx -t
安装时常见错误:

    1. 80端口被占用
      nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
  • 2 nginx: [error] invalid PID number "" in "D:\nginx-1.17.6/logs/nginx.pid"
    执行:nginx -c D:\nginx-1.17.6\conf\nginx.conf
  • 3.nginx: [error] CreateFile() "D:\nginx-1.17.6/logs/nginx.pid" failed (2: The system cannot find the file specified)

二 Nginx应用举例:

2.1 动静分离

动静分离是把网站中的资源分成两类,静态资源(如图片、静态页、css文件和js文件)和动态的资源(如:调用后台API接口)。
把静态资源缓存操作加快访问速度,动态资源转到后台处理。这就是网站静态化处理的核心思路

server {  
        listen       8080;        
        server_name  localhost;
        location / {
            root   html; # Nginx默认值
            index  index.html index.htm;
        }
        # 静态化配置,所有静态请求都转发给 nginx 处理,存放目录为 my-project
        location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {
            root /usr/local/var/www/my-project; # 静态请求所代理到的根目录
        }
        # 动态请求匹配到path为'api'的就转发到8002端口处理
        location /api/ {  
            proxy_pass http://localhost:8002; # 充当服务代理
        }
}

2.2 适配PC和移动端

一般站点的PC端和移动端不太相同,使用Nginx可以区分用户访问时采用的哪种方式(PC端和移动端),并返回对应的站点

server {
        listen       8080;        
        server_name  localhost;
        location / {
            # 适配移动端/PC端配置
            set $type "pc";
            if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) {
                set $type "mobile";
            }
            root /usr/local/var/www/my-project/$type; # 根据设备类型选择设定根目录文件夹名(pc/mobile)
            index  index.html index.htm;
        }
}

2.3 反向代理

Nginx最重要的功能是当做反向代理服务器,什么是方向代理,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的在哪里。
一般目标服务器都是内网发布,用Nginx作为中间服务器代理访问,可提高了内部服务器的安全,加快对内部服务器的访问速度及节约有限的IP资源。

    server {
        listen       8075;
        server_name localhost;
        location / {
              proxy_pass http://localhost:8072/;//代理到http://localhost:8072
        }    
    }

2.4 重定向

    server {
        listen       8061;
        #server_name  39.104.115.151;
        server_name localhost;
        location / {           
            rewrite ^/(.*) http://www.baidu.com;#重定向到百度
        }    
    }

2.5 负载均衡

什么是负载均衡 在互联网早期,业务流量相对比较小,而且业务逻辑比较简单,单台服务器便可以满足基本的需求;但是随着互联网的发展,业务流量越来越大、业务逻辑也越来越复杂,单台机器的性能问题以及单点问题凸显了出来,因此需要多台机器来进行性能的水平扩展以及避免单点故障

  • 2.51轮询
upstream backserver {
    server localhost:8067;
    server localhost:8068;
    }
  
     server {
        listen       8062;
        #server_name  39.104.115.151;
        server_name localhost;
        location / {           
            proxy_pass http://backserver ;
           
        }    
    }
  • 2.52 负载均衡之权重
   upstream backserver {
        server localhost:8067 weight=3;
        server localhost:8068 weight=1;
    }
     server {
        listen       8062;
        server_name localhost;
        location / {           
            proxy_pass http://backserver ;     
        }    
    }
  • 2.53 负载均衡之ip_hash

上面的 2 种方式都有一个问题,那就是下一个请求来的时候请求可能分发到另外一个服务器,当我们的程序不是无状态的时候(采用了 session 保存数据),这时候就有一个很大的很问题了,比如把登录信息保存到了 session 中,那么跳转到另外一台服务器的时候就需要重新登录了,所以很多时候我们需要一个客户只访问一个服务器,那么就需要用 iphash 了,iphash 的每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。

upstream backserver {
    ip_hash;
    server localhost:8067;
    server localhost:8068;
    }
    server {
        listen       8062;
        #server_name  39.104.115.151;
        server_name localhost;
        location / {           
            proxy_pass http://backserver ;
           
        }    
    }
  • 2.54 fair(需要在nginx安装第三方组件)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream backserver {
    fair;
    server localhost:8067;
    server localhost:8068;
    }
    server {
        listen       8062;
        #server_name  39.104.115.151;
        server_name localhost;
        location / {           
            proxy_pass http://backserver ;
           
        }    
    }

参考文章
(1) https://juejin.im/post/5e9ab2e851882573a67f62a0
(2)http://www.raye.wang/2017/02/24/quan-mian-liao-jie-nginxdao-di-neng-zuo-shi-yao/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容

  • **系统信息 **arch 显示机器的处理器架构(1)uname -m 显示机器的处理器架构(2)uname -r...
    淡淡紫色阅读 248评论 0 1
  • 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显...
    鲨宇阅读 272评论 0 0
  • 系统 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正...
    莎楽哥哥鸭阅读 759评论 1 51
  • Linux常用命令大全(非常全!!!) - 鸿燕藏锋 - 博客园 系统信息 arch 显示机器的处理器架构(1) ...
    Meathill大魔王阅读 351评论 0 1
  • 我们上了科学课,这次科学课小丁老师为我们传授了轻松做课学的方法。 那是一种4A纸的方法:先将一张4A纸...
    fdcb3b326216阅读 419评论 0 0