Nginx_Linux安装部署

一、常用外网映射工具

1.natapp

2.ngrok

二、应用场景

1.http服务器

2.虚拟主机配置

3.反向代理(负载均衡)

4.安全配置

5.API接口网关,解决跨域问题

6.实现网站动静分离

7.实现控制DDOS(安全控制)

三、Linux下安装nginx

http://nginx.org/download/nginx-1.21.1.tar.gz

1、安装

cd /usr/local/

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

tar -zxvf nginx-1.21.1.tar.gz

cd nginx-1.21.1 

./configure

make && make install

2、启动

//启动nginx
/usr/local/nginx/sbin/nginx

//检查nginx是否启动
ps -aux | grep 'nginx'

//停止nginx
/usr/local/nginx/sbin/nginx -s stop 

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


四、具体应用

1、大致解释

    ## 服务,创建监听的端口号
    server {
        ## 监听端口号
        listen       80;
        ## 服务名称
        server_name  www.test.com;
        
        ## 匹配URL路径 /表示匹配的有路径地址
        location / {
            ## 指向相对路径下的html文件夹
		    root html;
		    index  index.html index.htm;
        }

        ## ^~ 开头表示uri以某个常规字符串开头,不是正则匹配
        ## ~ 开头表示区分大小写的正则匹配;
        ## ~* 开头表示不区分大小写的正则匹配

        ## 表示/后面不能带任何字符串
        location =/ {
            ## 指向相对路径下的html文件夹
		    root html;
		    index  index.html index.htm;
        }

        ## 效果:当url为 www.test.com/tomcat_8080 时跳转到 http://127.0.0.1:8080
        ## 当url为 www.test.com/tomcat_8081 时跳转到 http://127.0.0.1:8081
        location =/tomcat_8080/ {
            ## 反向代理,跳转到另一个URL
		    proxy_pass http://127.0.0.1:8080;
		    index  index.html index.htm;
        }

        location =/tomcat_8081/ {
            ## 反向代理,跳转到另一个URL
		    proxy_pass http://127.0.0.1:8081;
		    index  index.html index.htm;
        }
    }

2、负载均衡

网络模型图

        应用层:文件传输,电子邮件,文件服务,虚拟终端。tftp,http,snmp,ftp,smtp,dns,rip,telnet

        表示层:数据格式化,代码转换,数据加密。没有协议

        会话层:解除或建立与别的接点的联系。没有协议

        传输层:提供端对端的接口。TCP,UDP

        网络层:为数据包选择路由。IP,ICMP,OSPF,GBP,IGMP,ARP,RARP

        数据链路层:传输有地址的帧以及错误检测功能。SLIP,CSLIP,PPP,MTU,ARP,RARP

        物理层:以二进制数据形式在物理媒体上传输数据。ISO2110,IEEE802,IEEE802.2

负载均衡作用:

        为了解决高并发,拦截所有的请求,采用负载均衡算法分配到不同的真实服务器上。减轻单台服务器的压力。

负载均衡会产生的问题:

        a.分布式Session一致性问题

        b.分布式Job幂等性问题

        c.分布式生成全局ID

        d.分布式锁解决方案

        e.分布式配置中心

        f.分布式日志收集系统

在Nginx中配置负载均衡:

    ## 定义一个或多个服务器
    ## 默认以轮循的方式,应用在服务器配置都差不多的时候
    upstream test{
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
    }

    ## weight 权重,应用在给主服务器减压的情况下,主服务器配置高,其他服务器配置低
    ## 权重比 可用内存比,若主服务器8G内存,另一台服务器2G内存,权重比为4:1,权重越高访问越多
    upstream test2{
        server 127.0.0.1:8080 weight=4;
        server 127.0.0.1:8081 weight=1;
        #weigth参数表示权值,权值越高被分配到的几率越大 ------ 官网
        
    }
    ## ip_hash IP绑定,通过nginx获取IP地址 hash运算固定分配到某个服务器上
    ## 可以解决session一致性问题
    upstream test2{
        server 127.0.0.1:8080 weight=4;
        server 127.0.0.1:8081 weight=1;
        
        #开启ip锁定
        ip_hash;
    }
    
    ## 配置负载均衡案例
    server {
        listen       80;
        server_name  www.test.com;
        charset utf-8;

        location / {
            ## 使用反向代理指向 test
            proxy_pass   http://test;
            index index.html index.htm;
        }
    }

    ## 配置负载均衡故障转移
    server {
        listen       80;
        server_name  www.test.com;
        charset utf-8;

        location / {
            ## 使用反向代理指向 test
            proxy_pass   http://test2;
            index index.html index.htm;
            ###nginx访问服务器超时时间 后端服务器连接的超时时间_发起握手等候响应超时时间
			proxy_connect_timeout 2s;
			###nginx发送给上游服务器(真实访问的服务器)超时时间
            proxy_send_timeout 2s;
			### nginx接受上游服务器(真实访问的服务器)超时时间
            proxy_read_timeout 2s;
        }
    }

3、nginx 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:客户端请求的动作,通常为GET或POST。
$remote_addr:客户端的IP地址。
$remote_port:客户端的端口。
$remote_user:已经经过Auth Basic Module验证的用户名。
$request_filename:当前请求的文件路径,由root或alias指令与URI请求生成。
$scheme:HTTP方法(如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相同。

具体用法:

    server {
        listen       80;
        server_name  41.111.69.101;
        charset utf-8;
        
        ## rewrite 规则一般写在server里,或location里
        ## 判断访问的IP地址为192.168.1.1 则返回403
		if  ($remote_addr = 192.168.1.1) {  
        	return 403;  
     	} 
     		
		## 不允许谷歌浏览器访问 如果是谷歌浏览器返回500
		if ($http_user_agent ~ Chrome) {   
            return 500;  
        }
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值