【nginx】全面实战-Mac

🛫 导读

需求

最近写了一个前端应用,需要部署后,让别人能访问,想来想去,还是选择了目前最强悍的nginx。
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

1️⃣ 安装

brew替换为阿里源

默认连接的外网,很慢,经常安装失败。

# 查看 brew.git 当前源
$ cd "$(brew --repo)" && git remote -v
origin    https://github.com/Homebrew/brew.git (fetch)
origin    https://github.com/Homebrew/brew.git (push)

# 查看 homebrew-core.git 当前源
$ cd "$(brew --repo homebrew/core)" && git remote -v
origin    https://github.com/Homebrew/homebrew-core.git (fetch)
origin    https://github.com/Homebrew/homebrew-core.git (push)

# 修改 brew.git 为阿里源
$ git -C "$(brew --repo)" remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git

# 修改 homebrew-core.git 为阿里源
$ git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git

# zsh 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrc
$ source ~/.zshrc

# bash 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.bash_profile
$ source ~/.bash_profile

# 刷新源
$ brew update

修复报错No such file or directory

设置好源后,执行安装命令brew install nginx,小编的电脑报如下错误:
在这里插入图片描述

网上有说权限问题,让修改权限,不过依然无法安装。
在这里插入图片描述

后来想了想,是不是这个文件有问题,删了,果然能安装了。
在这里插入图片描述

brew install nginx

安装过程会打印一些基本信息,如下(内容很长,截取开头的一部分):
在这里插入图片描述

常用文件及目录

安装后,nginx被安装到不同的目录(结构类似Linux),如下:

描述路径
可执行文件路径/usr/local/bin/nginx
配置文件/usr/local/etc/nginx/nginx.conf
默认网页路径/usr/local/var/www

常用命令

brew常用命令

  1. brew搜索软件命令: brew search nginx
  2. brew安装软件命令: brew install nginx
  3. brew卸载软件命令: brew uninstall nginx
  4. brew升级命令: sudo brew update
  5. 查看安装信息(比如查看安装目录等) sudo brew info nginx
  6. 查看已经安装的软件:brew list

nginx常用命令
启动命令: nginx
快速停止命令 nginx -s stop
平稳退出命令:nginx -s quit
重新加载配置文件命令:nginx -s reload
检查配置文件正确性:nginx -t
查询nginx主进程号:ps -ef | grep nginx

  • 正常停止:kill -QUIT 主进程号
  • 快速停止:kill -TERM 主进程号 / kill -INT 主进程号
  • 强制停止:kill -9 主进程号

2️⃣ nginx配置

配置结构

如上述配置文件所示,主要由6个部分组成:

  • main:用于进行nginx全局信息的配置
  • events:用于nginx工作模式的配置
  • http:用于进行http协议信息的一些配置
  • server:用于进行服务器访问信息的配置
  • location:用于进行访问路由的配置
  • upstream:用于进行负载均衡的配置
main                                # 全局配置
 
events {                            # nginx工作模式配置
 
}
 
http {                                # http设置
    ....
 
    server {                        # 服务器主机配置
        ....
        location {                    # 路由配置
            ....
        }
 
        location path {
            ....
        }
 
        location otherpath {
            ....
        }
    }
 
    server {
        ....
 
        location {
            ....
        }
    }
 
    upstream name {                    # 负载均衡配置
        ....
    }
}


具体参数,可参考文章《Nginx安装及配置详解包括windows环境》
https://blog.csdn.net/brian_keepwalking/article/details/107375603

3️⃣ web服务器

默认服务器

nginx安装好后,默认就有一个server(通过配置/usr/local/etc/nginx/nginx.conf实现的),该配置及介绍如下。


    server {
    	# 端口8080
        listen       8080;
        # 用于指定ip地址或者域名,多个配置之间用空格分隔
        server_name  localhost;

		# 表示匹配访问根目录
        location / {
        	# 用于指定访问根目录时,访问虚拟主机的web目录
            root   html;
            # 在不指定访问具体资源时,默认展示的资源文件列表
            index  index.html index.htm;
        }

        #error_page  404              /404.html;
        
        # 错误访问的地址
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

访问http://localhost:8080/, 最终效果:
在这里插入图片描述

自定义静态服务器

自己编译个静态网页,设置端口、路径如下:

    server {
        listen       8088;
        server_name  localhost;

        location / {
            root   /Users/khz/_ALL/STUDY/CODE/GIT/gitee/constellations/taurus-x/pig-ui/dist/dist;
            index  index.html index.htm;
        }
    }

访问http://localhost:8088/, 最终效果:
在这里插入图片描述

4️⃣ 反向代理

说反向代理之前,我们先看看正向代理,正向代理也是大家最常接触的到的代理模式。常见应用有游戏加速器等。
正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。

反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息!
多个客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,nginx扮演的就是一个反向代理角色
在这里插入图片描述

配置及介绍

在上文中,《自定义静态服务器》章节,我们配置了8088的页面。但是实际应用中,为了方便访问,我们需要配置的往往是80端口,下面的配置就是通过nginx配置反向代理实现该功能的例子。
访问http://localhost时,直接跳转到http://localhost:8088

server {
	listen       80;
	# server_name  192.168.17.129;
	server_name  localhost;

	location / {
		root   html;
		index  index.html index.htm;
		# 代理到8088端口
		proxy_pass  http://127.0.0.1:8088;
	}
}

5️⃣ 负载均衡

随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个陌生的话题,负载均衡是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验,快速增长的访问量和数据流量催生了各式各样的负载均衡的产品,很多专业的的负载均衡硬件提供了很好的功能,但价格不菲,这使得负载均衡软件大受欢迎,nginx就是其中一个,在linux下有nginx、lvs、haproxy等服务,可以提供复杂均衡服务。

配置及介绍

下面示例为,根据weight将请求转发到myserver列表中。

# 定义服务列表
upstream myserver{
  server 127.0.0.1:8081 weight=5;
  server 127.0.0.1:8082 weight=10;
}

server {
	listen       80;
	server_name  localhost;

	location / {
		root   html;
		index  index.html index.htm;
		// 代理到 myserver 列表
		proxy_pass  http://myserver;
	}
}

负载均衡的策略

  1. 轮询(默认) ;
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
upstream myserver{
  server 127.0.0.1:8081;
  server 127.0.0.1:8082;
}
  1. weight ;
    weight 代表权重默认为 1,权重越高被分配的客户端越多。指定轮询几率,weight权重大小和访问比率成正比。用于后端服务器性能不均衡的情况。
upstream myserver{
  server 127.0.0.1:8081 weight=5;
  server 127.0.0.1:8082 weight=15;
}
  1. ip_hash;
    每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器。
    好处:使用nginx+ip_hash这种策略代理,很好解决了同一用户访问同一个应用,session不共享的问题,实现session共享的问题。
upstream myserver{
  ip_hash;
  server 127.0.0.1:8081 weight=5;
  server 127.0.0.1:8082 weight=15;
}
  1. fair ;
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream myserver{
  fair;
  server 127.0.0.1:8081;
  server 127.0.0.1:8082;
}
  1. url_hash;
    按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream myserver{
  hash $request_uri;
  hash_method crc32;
  server 127.0.0.1:8081;
  server 127.0.0.1:8082;
}

📖 参考资料

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夜猫逐梦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值