[JavaEE] 狒狒都能懂的Nginx教程 for Mac

前文链接

[JavaEE] 搭建SpringCloud环境 进入微服务时代
https://www.jianshu.com/p/a0365a635975
温馨提示:本文是基于前文的扩展 没有基础的新手可以先去学习上文

一.简介

最近玩了玩Nginx感觉体验还不错 只是网上的文章有些让我迷惑 所以我来写一篇比较简洁的文章记录一下

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

通俗的讲 就是一个服务器 我们在开发中主要用于做反向代理负载均衡功能 下面就跟着我们的镜头一起来看吧!

二.安装

Nginx官网: http://nginx.org/en/

本文基于的环境是macOS 10.13.6

所以这里只讲述Mac上的安装方法Windows请自行安装

1.安装Homebrew

Homebrew是一套非常好用的包管理工具 我们可以直接使用它来安装Nginx

首先在终端执行

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

一行代码完事 安装好之后 输入brew查看是否安装正确

2.安装Nginx

很简单 在终端中输入命令

brew install Nginx

但是在安装过程中有可能遇到一个错误


问题出在了文件夹访问权限上 我们使用chmod命令来给文件夹授权

sudo chmod 777 /usr/local/sbin

授权之后再次执行安装即可

brew install Nginx

我们看到下图的提示就说明安装成功了


二.开始使用

1.让我们跑起来

经过上述步骤 我们的Nginx已经安装完毕了 之后我们来启动一下吧 直接在终端中输入:

nginx

如果没有任何错误提示 证明已经启动成功了...
我们打开localhost:8080来访问一下

看到如上图的样子说明Nginx已经启动成功了 好了下课 - - (开玩笑的)

接下来你有可能会有疑问 接下来我们用它做啥子呢?

我在文章开头已经说过了Nginx主要实现两个功能反向代理负载均衡

2.反向代理

什么是反向代理呢? 其实很好理解 就是通过Nginx转发请求到你其他的接口 以达到隐藏服务器真实地址的功能

下面我们就来配置一下 首先定位到配置文件路径

/usr/local/etc/nginx/nginx.conf 

command + shift + g 直接追过去

之后我们会看到一个nginx.conf


先别急 首先我们把这个文件复制一份 防止改坏了(程序员必备思想 - -)

之后用文本编辑器打开 可以看到一大坨代码 我把注释的地方都删了


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


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

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    include servers/*;
}

我们可以看见有一个叫server的字段 我们在这里面就可以配置服务器相关的东西了

localhost 服务器监听端口号

好的我们接下来就来配置一下反向代理 我们只需要在server里面的location中添加一个proxy_pass [空格] 你的服务器地址即可

server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://localhost:8082;
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

我这里在本地开了个8082端口的微服务 你们自行开启 如果不会 请学习我的springcloud文章5分钟搭建出微服务
https://www.jianshu.com/p/a0365a635975

我们修改完配置之后需要重新启动Nginx
首先结束进程

nginx -s stop

然后重新启动

nginx

好的 我们来试验一下效果吧 这里不要忘了 修改完配置文件必须重启Nginx才能生效

我们可以看到 我访问的是Nginx8080端口 而我的服务是在8082上面的 这时Nginx会把请求转发到8082让我可以访问到服务 可以看到网页上写着8082这是我在服务内部打印的端口

我们成功访问了接口 但是并没有暴露出服务器的地址 这就是所谓的反向代理 你请求给Nginx它帮你转发到你的本地服务上去

3.负载均衡

负载均衡就是把用户的请求 分摊到功能相同的不同服务器上去 来减轻单个服务器的压力 我想有些人到这里应该不太明白 我举个例子解释一下

百度这个网站每天有几亿人进行访问 这么庞大的访问量往往用一个服务器是不可能完成快速响应的 所以百度使用了集群策略 买了100台服务器 每个服务器都能提供搜索服务 用户访问百度的时候 会按照一定逻辑 随机访问其中一个 这样就不至于造成单个压力过大而宕机了 反过来说 即使单个服务器宕机后 还有99个服务器可以服务 所以搜索功能是不受影响的

这篇文章我用本地来模拟一下负载均衡 我从本地开两个服务:8082和:8083做集群

之后我们来简单配置一下nginx.conf文件

    upstream jiqun {
        server localhost:8082;
        server localhost:8083;
    }

    server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://jiqun;
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

配置中可以看到 首先声明两个服务 起个别名为jiqun之后我们修改proxy_passhttp://jiqun就可以了 这样我们访问接口的时候 就会随机转发到这两个相同的服务上去 实现负载均衡了

图1

我们可以看到 访问同一个网址 会在两个不同端口的微服务之间来回切换 说明我们已经实现了负载均衡

好的 接下来 我们来引入一个概念权重

假如我们有两个服务器
一个处理能力强
一个处理能力弱

我们希望让处理能力强的服务器 多接收一些用户请求 所以我们就要给nginx配置权重

upstream jiqun {
        server localhost:8082 weight=2;
        server localhost:8083 weight=1;
}

weight就是权重 配置为2的权重要比1高 我们来实际看一下效果 好的重启Nginx 我们来看看效果

图2

我看一下图2
1.访问4次8082
2.访问2次8083
3.循环

而没有配置的权重的图1
1.访问2次8082
2.访问2次8083
3.循环

所以没有配置过权重 默认就是同样的权重 好了 这就是Nginx最基本的配置实现了

finally enjoy it.

by objcat 2018.11.21

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容