高性能Nginx服务器(3)----linux环境部署Nginx服务器

nginx rewrite

  • Nginx提供了全局变量或者自己设置的变量,结合正则表达式和标志位实现url的重写以及重定向,rewrite只能放在server{},location{},if{}中,并且只能对域名后面的除去传递的参数外的字符串起作用。
  • rewrite主要的功能就是实现URL的重写,Nginx的Rewrite规则采用PCRE,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前需要编译安装PCRE库
  • 通过Rewrite规则,可以实现规范的URL,根据变量来做URL转向以及选择配置

Rewrite全局变量

  • nginx的rewrite规则就是使用正则表达式匹配请求的url,然后根据定义的规则进行重写和改变,需要nginx_http_rewrite_module模块来支持url的重写功能,该模块是标准模块,默认已经安装好了
变量含义
$args这个变量等于请求行中的参数,同$query_string
$content length请求头中的Content-length字段。
$content_type请求头中的Content-Type字段。
$document_root当前请求在root指令中指定的值。
$host请求主机头字段,否则为服务器名称。
$http_user_agent客户端agent信息
$http_cookie客户端cookie信息
$limit_rate这个变量可以限制连接速率。
$request_method客户端请求的动作,通常为GET或POST。
$remote_addr客户端的IP地址。
$remote_port客户端的端口。
$remote_user已经经过Auth Basic Module验证的用户名。
$request_filename当前请求的文件路径,由root或alias指令与URI请求生成。
$schemeHTTP方法(如http,https)。
$server_protocol请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
$server_addr服务器地址,在完成一次系统调用后可以确定这个值。
$server_name服务器名称。
$server_port请求到达服务器的端口号。
$request_uri包含请求参数的原始URI,不包含主机名,如”/foo/bar.php?arg=baz”。
$uri不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。
$document_uri与$uri相同。
  • 举例说明:判断IP地址的来源
  ## 如果访问的ip地址(用的就是请求头中的remote_addr进行判断的)为192.168.5.165,则返回403
     if  ($remote_addr = 192.168.5.166) {  
         return 403;  
     }  

  • 限制浏览器的访问(利用正则表达式判断请求头是否满足)
## 不允许谷歌浏览器访问 如果是谷歌浏览器返回500
 if ($http_user_agent ~ Chrome) {   
         return 500;  
 }

注意:这些语句一般放在server{]中
如:
在这里插入图片描述

Linux安装nginx

1.安装gcc gcc-c++(如新环境,未安装请先安装)
$ yum install -y gcc gcc-c++
2.安装wget
$ yum -y install wget

3.安装PCRE库
$ cd /usr/local/
$ wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz
$ tar -zxvf pcre-8.33.tar.gz
$ cd pcre-8.33
$ ./configure
$ make && make install
如果报错:

在 linux 中执行 wget 命令提示 -bash: wget: command not found 解决方法
解决办法 yum -y install wget

5.安装SSL库
$ cd /usr/local/
$ wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
$ tar -zxvf openssl-1.0.1j.tar.gz
$ cd openssl-1.0.1j
$ ./config
$ make && make install

6.安装zlib库存

$ cd /usr/local/
$ wget http://zlib.net/zlib-1.2.11.tar.gz
$ tar -zxvf zlib-1.2.11.tar.gz
$ cd zlib-1.2.11
$ ./configure
$ make && make install

5.安装nginx
$ cd /usr/local/
$ wget http://nginx.org/download/nginx-1.8.0.tar.gz
$ tar -zxvf nginx-1.8.0.tar.gz
$ cd nginx-1.8.0
$ ./configure --prefix=/opt/nginx
$ make && make install

  • 此时安装完毕后,安装好的nginx在/opt/nginx目录中

6.启动nginx
/usr/local/nginx/sbin/nginx
ps -aux | grep ‘nginx’

Linux环境中修改hosts文件

(1)host文件的位置:/etc/hosts
(2)vim /etc/hosts即可编译

Linux环境下常用Nginx的操作

  • 查询nginx 进程
    ps aux | grep ‘nginx’

  • 杀死进程方式关闭nginx
    kill -9 2363

  • 停止nginx服务器
    /opt/nginx-anzhaung/sbin/nginx -s stop

  • 重启nginx
    /opt/nginx-anzhaung/sbin/nginx -s reload

  • 启动nginx
    /opt/nginx-anzhaung/sbin/nginx

Linux环境下配置负载均衡

  • 此时我们要做的是在linux环境上搭建nginx服务器,在windows上写程序,让用户在浏览器上的访问先到达linux上的nginx服务器,再由nginx服务器反向代理到windows的本地物理ip上执行程序

  • windows上的物理机IP地址是:192.168.0.140

  • linux上的地址是:192.168.0.108

  • 我们的linux和windows的ip只要是一个网段就可以进行访问,在linux上pingwindows可以ping通就行

  • 开始配置:
    (1)因为我们访问是从windos上进行访问的,所以host文件是在windos上配置的,但是对应的IP地址是指向linux的
    在这里插入图片描述
    (2)修改linux上的nginx的配置


   ###定义上游服务器(需要被nginx真实代理访问的服务器) 默认是轮训机制
    upstream  backServer{
            server 192.168.0.140:8080;
            server 192.168.0.140:8081;
        }
     server {
        listen       80;
        ## 在windos上面配置,并不是在虚拟机中配置,因为客户端是在windows上的,访问是从windows来的,但是指向的linux上得到ip地址
        server_name  www.xiyou.com;
        location / {
                    ### 指定上游服务器负载均衡服务器
                    proxy_pass http://backServer;
                    index  index.html index.htm;
        }
    }

外网环境配置Nginx服务器–二级域名

  • 如www.baidu.com是一级域名
  • 如beikewww.baidu.com是二级域名,只要是自己定义出来的域名就可以称为二级域名(不是www开头的)
    在这里插入图片描述
  • 一般在微服务环境中,我们访问不同微服务其域名也应该是不同的。但是在API开发接口,即接口网关下,我们的域名就必须是相同的,一般是www.apiXXXX.com
  • 总结:在互联网公司中,一般以项目拆分域名,比如会员项目,订单项目
    会员:http://member.xiyou.com
    订单:http://order.xiyou.com
    根据域名去区分项目
  • 区分域名并不是根据前缀区分的,即www啊什么的,(前缀+域名名称+结尾),一般是根据域名名称+结尾进行区分的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值