nginx

nginx

bilibili尚硅谷nginx教程

1、nginx简介

什么是nginx?

Nginx (engine x) 是一个高性能的HTTP反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

Nginx 是一个很强大的高性能Web反向代理服务,它具有很多非常优越的特性:

在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。

反向代理

(1)、正向代理:梯子代理 ,访问最终目标 ,由配置的代理服务器去做

(2)、反向代理:访问代理,代理决定具体做什么。对外来讲,最终目标不可见,仅暴漏代理服务器ip端口

负载均衡

动静分离

2、nginx安装

docker方式安装如下

docker run --name nginx-test -p 80:80 -d nginx

配置文件/etc/nginx/nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

# 以上统称为全局块    
# worker_processes    数值越大,nginx的并发能力越强
# error_log    nginx的错误日志的存放位置

events {
    worker_connections  1024;
}
# events块
# worker_connections    数值越大,并发能力越强

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    # include /etc/nginx/conf.d/*.conf;替换为下面server块
    server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
		# location块
		# root 将接收到的请求根据/usr/share/nginx/html路径查找资源
		# index  从上述路径查找index.html/index.htm文件,响应给用户

    }
    # server块
	# listen    nginx监听的端口号
	# server_name	nginx接受请求的ip

}
# http块
# include    引入一个外部配置文件    mime.types存放大量的媒体类型
# include /etc/nginx/conf.d/*.conf;    引入了conf.d目录下的.conf结尾配置文件

挂载目录,手动配置server块

docker run --name nginx-test -p 80:80 -v /docker_dir/docker_nginx/conf.d:/etc/nginx/conf.d  -d nginx

配置好后,重启docker容器,成功访问。

3、反向代理

3.1、配置方式

server {
    listen       80;
    server_name  localhost;

    location / {
       proxy_pass http://119.29.228.75:8080/;  # 访问该nginx服务器,将会访问到http://119.29.228.75:8080
    }

   # location / {
   #     root   /usr/share/nginx/html;
   #     index  index.html index.htm;
   # }
}

3.2、关于location路径映射

  • = 匹配

location = / {

​ # 精准匹配,主机后面不能带任何的字符串

}

  • 通用匹配

location /xxx {

​ # 匹配所有以/xxx开头的路径

}

  • 正则匹配

location ~ /xxx {

​ # 匹配所有以/xxx开头的路径

}

4、负载均衡

nginx的三种负载均衡策略

  • 轮询

将客户端请求平均分配给每个服务器

  • 权重

根据每台服务器权重值的不同,将请求按比例分配给不同服务器

  • ip_hash

ip计算hash值,不同的ip分配给不同服务器

4.1、轮询

upstream my-server{
        server 119.29.228.75:8080;
        server 119.29.228.75:8081;
}
# upstream 名字{
# 		server ip:port;
#		server ip:port;
#		...
# }

server {
        listen       80;
        server_name  localhost;
        location / {
                proxy_pass http://my-server;
    			# proxy_pass http://upstream的名字;
        } 
}

4.2、权重

upstream my-server{
        server 119.29.228.75:8080 weight=10;
        server 119.29.228.75:8081 weight=2;
}
# upstream 名字{
# 		server ip:port weight=权重值;
#		server ip:port weight=权重值;
#		...
# }

server {
        listen       80;
        server_name  localhost;
        location / {
                proxy_pass http://my-server;
    			# proxy_pass http://upstream的名字;
        } 
}

4.3、ip_hash

upstream my-server{
    	ip_hash;
        server 119.29.228.75:8080;
        server 119.29.228.75:8081;
}
# upstream 名字{
# 		server ip:port;
#		server ip:port;
#		...
# }

server {
        listen       80;
        server_name  localhost;
        location / {
                proxy_pass http://my-server;
    			# proxy_pass http://upstream的名字;
        } 
}

5、nginx动静分离

5.1、动态资源代理

location / {
    proxy_pass 路径;
}

5.2、静态资源代理

location / {
    root /data;
    index index.html index.htm;
    autoindex on; # 以列表方式展示全部静态资源
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值