nginx基本配置

1、nginx应用场景

1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器

2、虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。

3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。

4、nginz 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。

2、nginx目录结构

Nginx-

|_  conf   配置目录

|_  contrib

|_  docs 文档目录

|_  logs  日志目录

|_  temp 临时文件目录

|_  html 静态页面目录

|_  nginx.exe 主程序

3、nginx虚拟主机的配置

1、基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站

2、基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台

3、基于ip的虚拟主机,几乎不用。

(1)基于虚拟主机配置域名

实现步骤:

需要建立/data/www /data/yyy目录,windows本地hosts添加虚拟机ip地址对应的域名解析;对应域名网站目录下新增index.html文件;

#当客户端访问www.test.com,监听端口号为80,直接跳转到data/www目录下文件

    server {

        listen       80;

        server_name  www.test.com;

        location / {

            root   data/www;

            index  index.html index.htm;

        }

    }

#当客户端访问yyy.test.com,监听端口号为80,直接跳转到data/yyy目录下文件

 server {

        listen       80;

        server_name  yyy.test.com;

        location / {

            root   data/yyy;

            index  index.html index.htm;

        }

    } 

 (2)基于端口的虚拟主机

使用端口来区分,浏览器使用域名或ip地址:端口号 访问

#当客户端访问www.test.com,监听端口号为8080,直接跳转到data/www目录下文件

    server {

        listen       8080;

        server_name  8080.test.com;

        location / {

            root   data/www;

            index  index.html index.htm;

        }

    }

#当客户端访问www.test.com,监听端口号为8081,直接跳转到data/yyy目录下文件

 server {

        listen       8081;

        server_name  8081.test.com;

        location / {

            root   data/yyy;

            index  index.html index.htm;

        }

    } 

4、nginx配置反向代理

(1)反向代理的作用

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

(2)反向代理的好处

反向代理的好处隐藏真实内部ip地址,请求先访问nginx代理服务器(外网可以访问到),在使用nginx服务器转发到真实服务器中。

(3)反向代理的配置

###当客户端访问www.test.com,监听端口号为8080直接跳转到真实ip服务器地址 127.0.0.1:8080

server {

        listen       8080;

        server_name  8080.test.com;

        location / {

 proxy_pass http://127.0.0.1:8080;

            index  index.html index.htm;

        }

}

###当客户端访问www.test.com,监听端口号为8081直接跳转到真实ip服务器地址 127.0.0.1:8081

server {

        listen       8081;

        server_name  8081.test.com;

        location / {

  proxy_pass http://127.0.0.1:8081;

            index  index.html index.htm;

        }

    }

5、location的配置

(1)location的作用

location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。

(2)location的语法

已=开头表示精确匹配
如 A 中只匹配根目录结尾的请求,后面不能带任何字符串。

^~ 开头表示uri以某个常规字符串开头,不是正则匹配

~ 开头表示区分大小写的正则匹配;

~* 开头表示不区分大小写的正则匹配

/ 通用匹配, 如果没有其它匹配,任何请求都会匹配到

(3)location正则案例

#精确匹配,/后面不能带任何字符

server {

        listen       80;

        server_name  www.test.com;

#精确匹配,注解后面不能带任何字符

        location =/ {

    proxy_pass http://127.0.0.1:8080;

            index  index.html index.htm;

        }

}

 

 #匹配所有以/开头请求

server {

        listen       80;

        server_name  www.itmayiedu.com;

   #匹配所有以/开头请求

        location / {

    proxy_pass http://127.0.0.1:8080;

            index  index.html index.htm;

        }

    }

###  以开头/test拦截  默认开启不区分大小写

server {

        listen       80;

        server_name  www.test.com;

###  以开头/test最终跳转到http://127.0.0.1:8080/;

        location /test/ {

    proxy_pass http://127.0.0.1:8080/;

            index  index.html index.htm;

        }

###  以开头/test1最终跳转到http://127.0.0.1:8081/;

location /test1/ {

    proxy_pass http://127.0.0.1:8081/;

            index  index.html index.htm;

        }

    }

6、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,然后根据定义的规则进行重写和改变,需ngx_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

客户端请求的动作,通常为GETPOST

$remote_addr

客户端的IP地址。

$remote_port

客户端的端口。

$remote_user

已经经过Auth Basic Module验证的用户名。

$request_filename

当前请求的文件路径,由rootalias指令与URI请求生成。

$scheme

HTTP方法(如httphttps)。

$server_protocol

请求使用的协议,通常是HTTP/1.0HTTP/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地址为192.168.5.165,则返回403

     if  ($remote_addr = 192.168.5.166) {  

         return 403;  

     }  

限制浏览器访问

## 不允许谷歌浏览器访问 如果是谷歌浏览器返回500

 if ($http_user_agent ~ Chrome) {   

         return 500;  

        }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值