网站首页 > 技术教程 正文
无论你写的是前端还是后端,都需要一台服务器来放你的档案。尤其后端更是如此。但你可能会疑惑说,我用 Express 不是就可以启动一个服务器了吗?我为什么需要另外再找服务器?这个问题问得很好!
还记得你之前写过的简单后端 API 吗?我们让它跑在http://localhost:5566。可是,你要怎么让别人连进来你的电脑,看到你写的后端 API 呢?这个时候你就需要一个 Domain 了。
Domain 的中文翻译叫做网域,跟网址的概念很像,例如example.com就是一个 domain,如果你想买 domain 的话,可以参考知名的网域购买平台GoDaddy。在买了之后,你需要设定你的 domain,才能让其他人连到正确的地方。
假设你电脑的IP 是123.1.1.1 好了,你就要在你买网域的地方的后台设定把example.com指到123.1.1.1,这样子当别人输入example.com的时候,其实就是在连到123.1.1.1 了。网页的预设 port 是 80,所以 example.com 等于会连到 123.1.1.1:80,如果你想连到别的 port 的话,需要自己再设定一下。
可是,你有看过网址上面出现 port 的吗?这样也太难记了吧!因此,大多数都是直接用 80 port,省去使用者要自己输入 port 的麻烦。但问题就来了,如果我在一台主机上面,想要跑两个网站怎么办? example.com 跟 example2.com 虽然都设定好连到 123.1.1.1,可是 80 port 只有一个啊,我该怎么办呢?
这时候,你的救星来了,叫做 nginx,是一个「反向代理」的服务器。
有关于什么是代理,什么是反向代理,有一篇文章讲得超级清楚:反向代理为何叫反向代理? 。虽然他已经讲得很好了,但为了造福懒得点连结进去看的人,我再稍微解释一下。
要谈反向代理,就要先谈正向代理,什么是正向代理呢?例如说我缺一大笔钱,但我没信用不能借,我就找我朋友去跟银行借。这时候你朋友就是你的「代理」,而银行那边也只会知道这个代理人,不知道是你借的钱。用网路中的术语来讲,就是一台 proxy server,你先连到 proxy server,再从 proxy server 连到别的网站,所以那些网站的 IP 来源都是 proxy server,而不是你自己的电脑。
那反向代理是什么呢?就是你今天跟一个私人机构说要借钱,而那个私人机构也把钱借给你了。可是呢,其实私人机构背后有很多金主,你不知道是哪一个金主借你的钱,你只知道这个神秘私人机构是你的对口而已。
正向代理:Server 不知道到底真的 client 是谁。
反向代理:Client 不知道到底真的 server 是谁。
那反向代理可以做什么呢?
还记得刚刚讲到的问题吗?我们想要在一台主机上面跑两个不同的服务,这时候就可以在这台主机上先架一个反向代理的服务,也就是 nginx。再让 nginx 决定他要把这个 request 丢给哪一个服务,就可以达成目的了。
更白话一点讲,假设你今天 A 服务跑在 5566 port,B 服务跑在 7777 port。 nginx 对外监听的都是 80 port。当你第一个 request 进来的时候,Host 的值写着:example.com,nginx 就知道他要找的是 example.com,就可以帮你把这个 request 转送给 5566 port。当第二个 request 进来的时候,写着 example2.com,就会转送给 7777 port,这样就可以在一台主机上面跑一大堆的服务了。
我们来试试看 nginx 吧!
安装的话,只要 brew install nginx 就可以了。至于 nginx 的设定档,你可以在 /usr/local/etc/nginx 里面找到。你可以打开 nginx.conf 看看,这是预设的设定档案:
看不懂没关系,最后一行有个include servers/*;,代表会把 servers 资料夹下面的设定档全部都引入。我们在 servers 资料夹底下开一个 test.conf,马上来尝试看看 nginx 的威力。
接着我们用 node.js 写一个非常简单的 index.js,并且让它跑起来:
再来,因为你更改了 nginx 的设定档,所以需要重新启动一下 nginx,在 mac 上我最喜欢的是把 nginx 直接关掉再启动一次:sudo pkill nginx && sudo nginx。真的重新载入设定档的指令我记不太住...
最后只剩一个步骤了,那就是 exmaple.com 跟 example2.com 这两个 domain,现在都不是连到你自己这台电脑上,所以用 nginx 来监听根本就没有用。因此,你现在要把这两个 domain 指到 127.0.0.1。可是你又没有买这两个 domain,怎么设定呢?
在 Mac 里面,有一个档案叫做 /etc/hosts,里面就可以指定你要让哪一个 domain 连去哪边,这边的设置优先层级会最高。记得要用 sudo 来打开,才能更改档案。
这样子设置,就可以让这两个 domain 都指到自己的电脑了。接着打开浏览器,并且浏览这两个网址,你就会发现看到两个不同的页面了。
这篇只提到nginx 最基本最基本也是我最常用的功能,但事实上nginx 厉害的地方就在他可以做的事情还超级无敌多,你甚至可以搭配plugin 就直接用刚刚那个设定档来写程式!狂吧,不愧是俄罗斯人做出来的东西。
如果对 nginx 想更了解的,就自己去找一些资源吧!
猜你喜欢
- 2024-10-13 推荐一个小工具:flog(推荐一个好用的)
- 2024-10-13 Docker 和 Kubernetes 从听过到略懂:给程序员的旋风教程
- 2024-10-13 HTML5如何实现视频直播功能(html video直播)
- 2024-10-13 直播大火,H5直播技术你知道吗?H5直播方案大讲解!
- 2024-10-13 简单聊聊实时视频rtmp(rtsp rtmp)
- 2024-10-13 如何快速的开发一个完整的iOS直播App
- 2024-10-13 Mac安装PHP开发环境(mac 开发php)
- 2024-10-13 Mac M1芯片电脑Java开发环境准备(java开发环境)
- 2024-10-13 完整的iOS直播App——搭建直播服务器
- 2024-10-13 Mac 基于HTTP方式访问下载共享文件,配置共享服务器
你 发表评论:
欢迎- 最近发表
-
- Oracle 在其新的 Linux 内核中引入了热补丁功能
- CentOS 7.6下安装Oracle 11.2.0.4
- ORACLE体系 - 2(oracle体系讲解)
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务
- Hadoop自学系列集(二) ---- CentOS下安装JDK
- 如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 搭建Oracle数据库服务器(oracle服务器创建用户)
- OGG同步到Kafka(oggforbigdata到kafka)
- oracle是什么软件?(oracle是干什么用的)
- 脚本化修改Oracle用户的密码以及执行sql(增删改查等)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)