nginx安装及配置代理

1、nginx安装

Nginx (tengine x) 是一个高性能的HTTP和反向代理web服务器。Nginx是一款轻量级的Web
服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。

1.1 应用场景

  1. web服务器
  2. 反向代理
  3. 负载均衡
  4. 动静分离:将静态资源缓存到nginx服务器,请求到达nginx,动态资源代理到tomcat,静态资源直接从nginx获取。

什么是代理?

客户机发送请求时,不会直接到达目标主机,先发给代理服务器,由代理服务器发送给目标服务器。

1.2 安装

步骤一:安装GCC编译器等工具

一、安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

二、首先要安装 PCRE
PCRE 作用是让 Nginx 支持 Rewrite 功能。
1、下载 PCRE 安装包,下载地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
[root@bogon src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

2、到指定文件夹解压安装包:
[root@bogon src]# tar zxvf pcre-8.35.tar.gz

3、进入安装包目录
[root@bogon src]# cd pcre-8.35

4、编译安装
[root@bogon pcre-8.35]# ./configure
[root@bogon pcre-8.35]# make && make install

5、查看pcre版本
[root@bogon pcre-8.35]# pcre-config --version

步骤二:yum安装Nginx

第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo
cd /etc/yum.repos.d/
vim nginx.repo
填写如下内容:
[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/7/$basearch/

gpgcheck=0

enabled=1

保存,则会产生一个/etc/yum.repos.d/nginx.repo文件。

下面直接执行如下指令即可自动安装好Nginx:
yum install nginx -y

安装完成,下面直接就可以启动Nginx了:
systemctl start nginx

现在Nginx已经启动了,直接访问服 务器就能看到Nginx欢迎页面了的。

2、配置

nginx.conf文件结构

...              #全局块
 
events {         #events块
   ...}
 
http      #http块{
    ...   #http全局块
    server        #server块
    {
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN]
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块}

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况。

#这里是直接转发给后端应用服务器了,也可以是一个静态首页
 第一个必选规则
location = / {
    proxy_pass http://tomcat:8080/index
}
 
 第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项
 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
location ^~ /static/ {                              //以xx开头
    root /webroot/static/;
}
#或者
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {     //以xx结尾
    root /webroot/res/;
}

3、实战示例

3.1 nginx实现web服务

步骤一:修改nginx的配置文件,内容如下,加在http的块中

server {
    listen 80;
    server_name 192.168.75.11; 
    location / {
      root /home/web/html;
      index  index.html;
    }
}

步骤二:修改好配置文件之后,可以使用nginx -t 校验文件是否语法合法
修改重要配置文件记得备份(cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak)
步骤三:创建 /home/web/html目录,并上传index.html文件
步骤四:重新加载nginx的配置文件nginx -s reload,或者重启nginx服务
测试效果
浏览器输入nginxIP地址(默认80端口的话不用写端口号)

nginx常用命令

  1. nginx -t :测试配置文件是否有语法错误
  2. nginx -s reopen:重启Nginx
  3. nginx -s reload:重新加载Nginx配置文件,然后以优雅的方式重启Nginx
  4. nginx -s stop:强制停止Nginx服务
  5. nginx -s quit:优雅地停止Nginx服务(即处理完所有请求后再停止服务)

3.2 nginx实现反向代理

实现访问虚拟机反向代理到百度首页
http块里加一个server块

server {    
    listen 80;    
    server_name 192.168.75.11;  #如果是集群环境,此处换成虚ip
    location / {     
        proxy_pass  https://www.baidu.com; #proxy_pass 通过代理指向百度页面  
    }
} 

在实际开发过程中,使用nginx的分类配置,实现多个配置文件同时生效
nginx.conf配置文件可以加载一些子配置(目录为include /etc/nginx/conf.d/*.conf;)

3.3 nginx实现负载均衡

打包三个项目jar包传到Linux虚拟机(三个端口号不同7000 8000 9000)

**配置nginx配置文件**
#定义Nginx运行的用户和用户组 如果对应服务器暴露在外面的话建议使用权限较小的用户 
user  root;
#Nginx进程数, 建议设置为等于CPU总核心数
worker_processes  1; #开启全局错误日志类型
error_log  /var/log/nginx/error.log warn;
#进程文件
pid  /var/run/nginx.pid;
events {
    worker_connections  1024; #单个进程最大连接数
}
http {
    #扩展名与文件类型映射表
    include       /etc/nginx/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  /var/log/nginx/access.log  main;
 
    sendfile     on;
    #tcp_nopush     on;
 
    keepalive_timeout  65;
 
    #gzip  on;
    #负载均衡组
    upstream myServer{      
       server 192.168.75.11:7000;      
       server 192.168.75.11:8000;  
       server 192.168.75.11:9000;   
    }     
    server {    
        listen  80;    
        server_name 192.168.75.11;  #如果是集群环境,此处换成虚ip
        location / {     
          proxy_pass  http://myServer;      
        }
    }
    include /etc/nginx/conf.d/*.conf;
} 

nginx常见的负载均衡策略

1、轮询
轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除。

upstream myServer{
     server 192.168.75.11:7000;      
     server 192.168.75.11:8000;  
     server 192.168.75.11:9000;
}

2、weight
轮询的加强版,即可以指定轮询比率,weight和访问几率成正比,主要应用于后端服务器异质的场景下。

upstream myServer{
    server 192.168.75.11:7000 weight=1;
    server 192.168.75.11:8000 weight=2;
    server 192.168.75.11:9000 weight=3;
}

3、ip_hash
每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决session一致问题。

upstream myServer {
    ip_hash;
    server 192.168.75.11:7000;
    server 192.168.75.11:8000;
    server 192.168.75.11:9000;
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值