Nginx 教程(详细)

Nginx 教程(详细)

1:简介

Nginx 是一个异步框架的 Web 服务器,也可以用作反向代理,负载平衡器 和 HTTP 缓存。

2:安装

2.1:安装gcc环境
yum install gcc-c++
2.2:安装pcre
yum install -y pcre pcre-devel
2.3:安装zlib
yum install -y zlib zlib-devel
2.4:安装openssl
yum install -y openssl openssl-devel
2.5:安装Nginx

下载源代码包:

wget http://nginx.org/download/nginx-1.18.0.tar.gz

Nginx官网下载地址:http://nginx.org/en/download.html

在这里插入图片描述
建议下载稳定版本使用。

解压并安装 Nginx:

# tar -xvf nginx-1.18.0.tar.gz
# cd nginx-1.18.0
# ./configure
# make
# make install
2.6:修改配置文件 nginx.conf
vi /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

3:运行

/usr/local/nginx/sbin/nginx -s reload

如果报 [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory) 错误,则执行 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 命令后再次启动运行 Nginx。

查看 Nginx 启动状态

ps -ef | grep nginx

注意:外部访问时要关闭防火墙。

访问 IP 地址:

在这里插入图片描述

Nginx 相关命令:

./nginx -s reload            # 重新载入配置文件
./nginx -s reopen            # 重启 Nginx
./nginx -s stop              # 停止 Nginx
./nginx -s quit              # 关闭 Nginx

4:反向代理

反向代理你可以理解为:

网络上我重拳出击,现实中我唯唯诺诺。 ——键仙

在这里插入图片描述

你并不知道键仙的真实姓名,位置,年龄或任何东西,拥有很好的隐秘性。

在这里插入图片描述

反向代理也是如此。尽管可以访问服务器,但它不是真正的服务器。服务器的反向代理成功隐藏了真实的服务器地址。

Nginx 实现非常简单,只需要添加:

proxy_pass  http://xxxxxxxxxx;
server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://180.101.49.11;
            index  index.html index.htm index.jsp;
        }
    }

其中,http://180.101.49.11 是百度的 ip 地址,重新载入配置文件并重启后,访问 http://服务器ip地址,会自动返回百度数据。

4.1:location块

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

server {
        ......
        ......
        ......     
        
        location  ~*^.+$ {       
           #root html;  #根目录
           #index index.html index.htm;  #设置默认页
           proxy_pass  http://xxxxxxxx;  #请求转向xxxxxxxx 定义的服务器列表
           deny 127.0.0.1;  #拒绝的ip
           allow 172.18.5.54; #允许的ip           
        } 
    }

location 第一行是一个正则,对请求的url过滤,正则匹配,~ 为区分大小写,~* 为不区分大小写。

每一行都有注释,我们举个例子来巩固下。

	server {
        listen       9999;
        server_name  localhost;

        location / {
            root   html;
            index  index2.html index2.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

这里我们写了两个 location,第一个 location 代表:当我们访问 http://localhost:9999 会自动拼接 url ,最终访问 url 为:http://localhost:9999/html/index2.html.

error_page 代表错误处理:当出现 500 502 503 504 时,请求就变为了 http://localhost:9999/50x.html

第二个location 对 /50x.html 进行了拦截过滤,拼接 url 后就变为了 http://localhost:9999/html/50x.html

5:负载平衡

在这里插入图片描述
Nginx 负载平衡主要通过配置:upstream mysvr

假如,我们有两台服务器,某天,其中一台服务器突然挂掉了,那么我们就需要启动备用服务器。

upstream mysvr { 
    server 192.168.0.11:1111;
    server 192.168.0.22:2222 backup; #备用
}

再后来,我们又购置了一台服务器,要求它分担正在运行服务器的压力:(平均分配)

upstream mysvr { 
    server 192.168.0.11:1111;
    server 192.168.0.33:3333;
    server 192.168.0.22:2222 backup; #备用
}

又过了一阵,突然发现网上某台服务器打折扣,而且配置性能时原来单个服务器性能的 2 倍,我们马上购置了一台。

既然配置高,那我们就可以让它多做点事情。

添加权重:

upstream mysvr { 
    server 192.168.0.11:1111 weight=1;
    server 192.168.0.33:3333 weight=1;
    server 192.168.0.55:5555 weight=2;
    server 192.168.0.22:2222 backup; #备用
}

执行顺序就变成了:

192.168.0.11:1111;
192.168.0.33:3333;
192.168.0.55:5555;
192.168.0.55:5555;
192.168.0.11:1111;
192.168.0.33:3333;
192.168.0.55:5555;
192.168.0.55:5555;

6:解决跨域问题

	location / {
          add_header Access-Control-Allow-Origin * always;
          add_header Access-Control-Allow-Headers "kbn-xsrf,Content-Type";
          add_header Access-Control-Allow-Methods "GET, POST, PUT, OPTIONS";
          if ( $request_method = 'OPTIONS' ) { 
              return 200;
          }
          proxy_pass http://192.168.1.155:5601;
          root   html;
          index  index.html index.htm;
     }
  • 41
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一拖再拖 一拖再拖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值