linux下nginx安装与配置

nginx简介

Nginx(engine x)是一个轻量级、高性能的Web和反向代理服务器,也是一个IMAP、POP3和SMTP服务器,并且安装十分简单,配置文件非常简洁,启动特别容易,运行十分稳定,几乎可以做到7*24小时不间断运行,在国内大厂(如:BATJ)均得到广泛应用。

Nginx特性

Nginx的特性有很多,最常用的就是Web服务器、反向代理和负载均衡等

1. Web服务器

	Nginx作为一个Web服务器,相比Apache,使用更少的资源,支持更多的并发,最高的并发达50000个,而tomcat则只有500左右。

2. 反向代理

	有反向代理,那么就有正向代理,这是两种不同的代理模式,分析如下:


正向代理
  • 正向代理服务器架设在客户端,用于代理客户端的网络请求,客户端要先把网络请求发送到代理服务器,然后由代理服务器去请求目标服务器。最常用的就是VPN,尤其是国内无法直接访问许多网站,经常翻墙去访问,就是正向代理的模式。

    反向代理:

  • 反向代理服务器是架设在服务器端,通过缓冲常用请求页面来提高服务器的工作效率,将客户端的请求(可能是多个域名的请求)转发给内部对应的服务器,然后把服务器的处理结果返回给客户端。实现原理是:多个域名可以绑定到同一个IP,通过反向代理,在服务器内部把请求的域名等信息解析到对应的服务器,然后提供服务。

3. 负载均衡:

  • Nginx内部直接支持Rails和PHP,也支持作为HTTP服务器来对外提供服务;Nginx采用C编写,其资源开销比较少、使用效率比较高。可以把客户端的请求分配到多个同级服务器,也可以根据服务器的性能,设置不同的权重,如加大性能高的服务器的负载量等。

安装

使用Docker 安装 Nginx

  • 方法一、docker pull nginx(推荐)

    查找 Docker Hub 上的 nginx 镜像

      $ docker search nginx
    

    这里我们拉取官方的镜像

      $ docker pull nginx
    

    等待下载完成后,我们就可以在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像。

      $ docker images nginx
    
  • 方法二、通过 Dockerfile 构建(不推荐)

  • 方法三、通过 homebrew 去拉取

      $ brew install nginx 
    

    安装成功后启动:

      $ brew services start nginx
    
进行端口测试:

使用brew安装成功后,nginx的安装和配置目录不在一起,具体如下:

  • 安装目录:/usr/local/Cellar/nginx/1.15.9/
  • 配置目录:/usr/local/etc/nginx/
  • 工作目录:/usr/local/var/www,在安装目录下有一个软连接www,指向本目录
  • 启动nginx

      $ nginx
    
  • 停止nginx

      $ nginx -s stop
    
  • 重启nginx

      $ nginx -s reload
    

反向代理 (例子)

假设希望别人输入 localhost:8080 时直接跳转到 别的页面,那么在 nginx.conf 中配置

http {
  server {
    listen 8080;
 
    location / {
      proxy_pass http://www.baidu.com;
    }
  }
}

配置完成需要重启nginx

Nginx 目录自动加斜线

nginx不会自动在请求的最后加上一个/的,原因是nginx不会自动判断请求的是一个文件还是一个目录,解决方法为:
在配置文件中location里加入如下代码

if (-d $request_filename){
	rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}

这样再发出请求,nginx就会进行判断了,如果请求的是一个文件夹,会自动在最后加上/符号,如果请求的是一个文件,则不会改变原有url

负载均衡

Nginx 负载均衡

  1. Nginx 基础知识

    nginx的upstream目前支持5种方式的分配

upstream模块

upstream模块主要负责负载均衡的配置,通过默认的轮询调度方式来分发请求到后端服务器

简单的配置方式如下

upstream name {
    ip_hash;
    server 192.168.1.100:8000;
    server 192.168.1.100:8001 down;
    server 192.168.1.100:8002 max_fails=3;
    server 192.168.1.100:8003 fail_timeout=20s;
    server 192.168.1.100:8004 max_fails=3 fail_timeout=20s;
}

核心配置信息如下

ip_hash:指定请求调度算法,默认是weight权重轮询调度,可以指定

server host:port:分发服务器的列表配置

– down:表示该主机暂停服务

– max_fails:表示失败最大次数,超过失败最大次数暂停服务

– fail_timeout:表示如果请求受理失败,暂停指定的时间之后重新发起请求

参考这个https://www.jianshu.com/p/dbd68d842c79

猜你喜欢

转载自blog.csdn.net/Missbelover/article/details/88062519