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/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

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

友情链接更多精彩内容