nginx的安装配置

2019-12-03  本文已影响0人  缘木与鱼

安装nginx

下载地址
[下载地址](http://nginx.org/en/download.html)
官网:
http://nginx.org/

或者
wget http://nginx.org/download/nginx-1.17.0.tar.gz

本次以 nginx-1.12.2 为例

1、安装依赖

yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake

yum -y install wget httpd-tools vim

yum -y install zlib zlib-devel openssl openssl-devel

2、安装nginx

解压安装包

tar -zxvf nginx-1.12.2.tar.gz

cd nginx-1.12.2

./configure

make && make install

安装完成后可以在/usr/local/nginx/sbin 下看到启动文件 nginx

在该目录下执行./nginx 可以启动

./nginx

## 查看进程是否启动
ps -ef | grep nginx
验证方法:  

直接在浏览器访问 主机IP

3、若主机开启了防火墙,需添加端口到防火墙

查看防火墙开放的端口:
firewall-cmd --list-all

设置防火墙开放的端口号:
firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=80/tcp --permanent

重启防火墙
firewall-cmd --reload

nginx常用命令

在 /usr/local/nginx/sbin 下执行

-- 查看版本:
./nginx -v

-- 关闭nginx
./nginx -s stop

-- 启动nginx
./nginx

-- 重新加载nginx
./nginx -s reload

nginx的配置

1、配置文件的位置:
/usr/local/nginx/conf/nginx.conf

2、配置文件的内容
分为三部份内容:

1、全局块  
  从配置文件开始到 events 块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令。  
     
  比如: worker_processes  1;   
    worker_processes 的值越大,可以支持的并发处理量越多   


2、events块
  主要影响nginx服务器与用户的网络连接
  
  比如: worker_connections  1024;     nginx支持的最大连接数


3、http块(配置最多)

nginx配置实例 -- 反向代理一

示例: 在页面访问 www.123.com, 跳转到Linux的tomcat主页面

操作:
1、先修改hosts文件,将域名与主机地址做映射
    10.20.0.102     www.123.com

2、在nginx中进行请求转发的配置(反向代理的配置)
   修改文件 /usr/local/nginx/conf/nginx.conf ,文件里的http下的server中的内容 ,  
   1、将server_name 改成主机对应的ip
   2、在location中添加  proxy_pass   http://127.0.0.1:8080;
   添加的是要转发的端口内容

如下所示:

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        # server_name  location;
        server_name  10.20.0.102;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            proxy_pass   http://127.0.0.1:8080;
            index  index.html index.htm;
        }
        
    ...

3、重新加载nginx

./nginx -s reload

4、在页面上访问www.123.com 进行测试
可以看到页面内容为已转发后的内容 -- tomcat页面。

nginx配置实例 -- 反向代理二

监听一个端口,根据端口下面的内容不同,转发向不同的端口。

例: 在主机上启动了两个服务,端口号分别是8080、8081,nginx监听的端口为9001,当请求的内容中为:

http://10.20.0.102:9001/edu/      转发到10.20.0.102:8080  
http://10.20.0.102:9001/vop/      转发到10.20.0.102:8081

nginx 的配置如下:

server {
        listen       9001;
        server_name  10.20.0.102;

        location ~ /edu/ {
            proxy_pass   http://127.0.0.1:8080;
        }
        
        location ~ /vod/ {
            proxy_pass   http://127.0.0.1:8081;
        }
    }

location 的使用说明

location [ = | ~ | ~* | ^~ ] uri {

}

1、 = : 用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功就停止继续向下搜索并立即处理该请求。

2、 ~ : 用于表示uri包含正则表达式,并且区分大小写。

3、~* : 用于表示uri包含正则表达式,不区分大小写。

4、^~ : 用于不含正则表达式的 uri 前,要求 nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,
         立即使用此 location 处理请求,而不再使用 location块中的正则 uri 和请求字符串做匹配。

注意: 如果uri包含正则表达式,则必须要有 ~ 或者 ~* 标识。

nginx配置实例 -- 反向代理三

例: 当一个服务对不同的系统提供的接口号不同时,对系统一提供的接口的端口为10.20.0.102:8080, 对系统二提供的接口的端口为 10.20.0.102:8081, 这时需要nginx同时监听这两个端口,然后将请求转发到服务的端口上(服务自身的端口实际为1158).
配置如下:

http{
    ...
    # 服务自身端口
    upstream myserver {
        server      10.20.0.102:1158;
    }

    server {
        listen       8080;
        listen       8081;
        server_name     localhost;
        
        location / {
            proxy_pass   http://myserver;
            
            ......
        }   
    }
}

nginx配置实例 -- 负载均衡

根据请求,将请求平均转发到不同的服务上。
如: 有一个请求到 10.20.0.102:80 上,然后nginx将请求转发到8080,8081端口上。

/usr/local/nginx/conf/nginx.conf 配置如下:

http{
    ...
    upstream myserver {
        server   10.20.0.102:8080;
        server   10.20.0.102:8081;
    }

    server {
        listen          80;
        server_name     10.20.0.102;
        
        location / {
            proxy_pass   http://myserver;
            
            ......
        }   
    }
}

负载均衡的策略:

1、轮询(默认的策略)

每个请求按时间顺序逐一分配到不同的后端服务器上,如果服务器down了,会自动剔除。

2、 weight(权重)

权重默认为1,权重越高被分配的客户端越多。
如:上面的例子中,8081的性能更好,分配的客户端更多。

upstream myserver {
    server   10.20.0.102:8080   weight=5;
    server   10.20.0.102:8081   weight=10;
}

3、ip_hash

每个请求按访问IP的hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决session 的问题。
例如:

upstream server_pool{
    ip_hash;
    server 10.20.0.101:8080;
    server 10.20.0.102:8080;
}

4、fair(第三方)

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

upstream server_pool{
    server 10.20.0.101:8080;
    server 10.20.0.102:8080;
    fair;
}

nginx配置实例 -- 动静分离

nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分开,严格意义上说应该是动态请求跟静态请求分开,可以理解成使用nginx处理静态页面,tomcat处理动态页面。

动静分离从目前实现角度来讲大致分为两种:

一种是纯粹的把静态文件独立成单独的域名,放在独立的服务器上,这是目前主流的方案。
另一种是动态跟静态文件混合在一起发布,通过nginx来分开。

通过location指定不同的后缀名实现不同的请求转发,通过expires参数设罝,可以使浏览器缓存过期时间,减少与限务器之间的请求和流量。  
  具体Expires定义:
是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可, 所以不会产生额外的流量。
此种方法非常适合不经常变动资源。(如果经常更新的文件, 不建议使用Expires来缓存)。
假如这里设罝3d,表示在这3天之内访问这个URL,发送 一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,
如果有修改,则直接从服务器重新下载,返回状态码200。
上一篇 下一篇

猜你喜欢

热点阅读