欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Nginx的安装及配置

程序员文章站 2022-06-26 14:06:10
Nginx Nginx是个web服务器,常用作静态文件服务器,反向代理服务器,邮件代理服务器,负载均衡服务器 Nginx安装 1. 安装淘宝nginx,编译安装,先解决模块依赖 yum install gcc patch libffi-devel python-devel zlib-devel bz ......

nginx

nginx是个web服务器,常用作静态文件服务器,反向代理服务器,邮件代理服务器,负载均衡服务器

 

nginx安装

1. 安装淘宝nginx,编译安装,先解决模块依赖

 yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y

2. 获取淘宝nginx的源代码

 wget

3. 解压缩源代码包

 tar -zxvf tengine-2.3.2.tar.gz

4. 进入源代码目录开始编译三部曲

 ①指定安装路径

  ./configure --prefix=/opt/tngx

 ②编译且安装

  make && make install

 ③安装完成之后,进入nginx的目录

  [root@localhost tngx]#pwd

  /opt/tngx

  [root@localhost tngx]#ls

  conf html logs sbin

    • conf    存放配置文件
    • html    存放前端页面
    • logs    nginx的运行日志
    • sbin    nginx的可执行命令目录

  进入sbin目录

  [root@localhost tngx]#cd sbin

    • ./nginx    启动nginx
    • ./nginx -s stop    停止nginx
    • ./nginx -t    检查nginx.conf的语法是否正确
    • ./nginx -s reload    不重启nginx,重新加载nginx配置

 

nginx配置

配置文件为conf目录下的nginx.conf

nginx虚拟主机

http {
    #nginx支持多虚拟主机,只需要写入多个server关键字即可
    #虚拟主机1
    server {
    #基于端口的虚拟主机区分
    listen       80;
    #基于域名的虚拟主机区分
    server_name www.asdf.com;
    #charset koi8-r;
    #access_log logs/host.access.log main;
    #access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2g" main;

    #这里是nginx的url匹配,如同django的url一样
    #当请求 http://192.168.182.130:80/abc.jpg 这样的url时,就进入如下location匹配
    #这个是最低级的匹配,所有请求都会走到这里
    location / {
        #root关键字定义虚拟主机的根目录,这里是可以修改的
        root   /opt/abc/;
        #index参数定义首页文件的名字
        index index.html;
    }
  }

    #虚拟主机2
    server {
    #基于端口的虚拟主机区分
    listen       81;
    #基于域名的虚拟主机区分
    server_name www.qwer.com;
    #charset koi8-r;
    #access_log logs/host.access.log main;
    #access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2g" main;
    #这里是nginx的url匹配,如同django的url一样
    #当请求 http://192.168.182.130:81/xyz.jpg 这样的url时,就进入如下location匹配
    #这个是最低级的匹配,所有请求都会走到这里
    location / {
        #root关键字定义虚拟主机的根目录, 这里是可以修改的
        root   /opt/xyz/;
        #index参数定义首页文件的名字
        index index.html;
    }
  }
}

nginx错误页面404优化

server {
    listen 80;
    server_name www.asdf.com;  
    #通过error_page参数定义即可
    #404.html文件的相对路径为root定义的目录
    error_page 404             /404.html;
    location / {
        root   /opt/abc/;
        index index.html;
    }
  }

nginx反向代理

  • 环境准备

    • 机器1 192.168.182.130,代理服务器

    • 机器2 192.168.182.131,资源服务器

  • 反向代理服务器配置如下

    在代理服务器的配置文件中,找到server{}虚拟主机,在location内设置proxy_pass参数

    server {
        listen       80;
        server_name www.asdf.com;
        #charset koi8-r;
        #access_log logs/host.access.log main;
        #access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2g" main;
        location / {
            #实现反向代理的功能参数
            #实现反向代理的功能参数
            #实现反向代理的功能参数
            proxy_pass http://192.168.182.131;
        }
    }

nginx负载均衡

  • 环境准备

    • 1台负载均衡服务器

      • 192.168.182.130 负载均衡服务器

    • 2台资源服务器

      • 192.168.182.131 资源服务器1

      • 192.168.182.132 资源服务器2

  • 在负载均衡服务器配置文件中,定义upstream负载均衡池

    #默认轮询方式
    upstream test {
        server 192.168.182.131;
        server 192.168.182.132;
    }

    #权重方式
    upstream test {
        server 192.168.182.131 weight=4;
        server 192.168.182.132 weight=1;
    }

    #ip哈希方式,根据用户的来源ip计算出哈希值,永远只指派给一个服务器去解析
    #ip哈希不得与权重共同使用
    upstream test {
        server 192.168.182.131;
        server 192.168.182.132;
        ip_hash;
    }
  • server{}虚拟主机在location内设置proxy_pass参数,将请求转发给负载均衡池

    server {
        listen       80;
        server_name www.asdf.com;
        #charset koi8-r;
        #access_log logs/host.access.log main;
        #access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2g" main;
        location / {
            #root   /opt/abc/;
            #index index.html;
            #请求转发给负载均衡池
            #请求转发给负载均衡池
            #请求转发给负载均衡池
            proxy_pass http://test;
        }
    }