首先我们要有自己的网站,以及一个云服务器(不限制运营商,有公网IP地址即可),首先我们的网址本地启动之后浏览器访问到的网址应该为localhost:8080 (举例:默认为8080端口),假设我们的云服务器ip地址为192.168.1.1,那么我们将该网站部署到云服务器上之后对应的网址应该变为192.168.1.1:8080,不需要我们本地启动即可通过浏览器访问。
但是传统ip地址造成的数字网址不容易记忆,且没有独特性(方便人记忆的网址有特殊意义),如我想要网址变为http://www.AsiaBullfrog.com(亚洲牛蛙英文),且访问这个地址等同访问了我的192.168.1.1:8080网址进入我的网站,其中我们将上述举例网址拆开解析,.com为顶级域名,Asiabullfrog为一级域名,www则为二级域名,其中顶级域名是固定的(一共就那么多,想要什么只能通过点选的方式),二级域名为我们想要的英文特殊含义字母组成(随意编写),三级域名为后期配置域名解析时规定(后续讲解)
首先要购买一个域名(这里运营商不做推荐,拿腾讯云举例),进入域名注册官网
搜索成功后系统会自动展示与我们设想的一级域名匹配的方案
其中完美匹配的意思是与我们想要的域名一模一样匹配的意思,因为在设置域名的过程中,会出现冲突的问题,如你和我同时想要一个域名,就会出现重复,那么系统可能会进行方案提示,如在你想要的一级域名之后添加数字等避免查重(类似于我们注册游戏,昵称后面加上数字避免用户名重复“非常美丽的巨兔12138”),我们可以进行随意选择去购买想要的域名(看好价格,因为有的域名续费价格会比首年开通要贵,如果你打算长期使用的话)。
购买后会在我们的控制台看到当前所持有域名的信息
到这里我们就可以开始使用域名了,在我们的控制台选择刚才购买的域名点击解析
何为域名解析? 域名解析的左右通俗所说就是让这个域名去帮定一个ip地址,例如我们上述的192.168.1.1,实际上我们访问该域名就等于访问了该ip地址
在配置域名解析的页面中有如下图所示的几个填空,其中主机记录可以填写@,www等字样,其中的含义为如果选择了www,那么我们的网址二级域名就是www(访问网站时需要是www.我们买的域名.com,等于我们的云服务器ip192.168.1.1),其中@表示三级域名为空(我们买的域名.com,等于我们的云服务器ip地址 192.168.1.1),我们还可以选填或手动填写其他二级域名,不做过多解释。
其中记录值的意思就是我们云服务器的ip地址,切记不要加上程序的端口号,这里先不涉及到端口号,其他都默认就ok了,权重可以不写,点击确认。
配置完成后我们的逻辑其实是 = 主机记录.域名.顶级域名,如上图我们的主机记录配置为www,那么生效后我们打开cmd 输入ping www.asiabullfrog.com 看看是不是对应上了我们云服务器的ip地址
这样我们的域名解析就完成了,到这里基本就ok了
回到我们的网站,目前浏览器输入www.asiabullfrog.com:8080就可以访问我们的个人网站
但其中必须加上端口号,我们平时见到的网站又没有端口号,那么如何做到不用端口号就能访问呢。这就涉及到了进阶内容,nginx反向代理。
通过 Nginx 监听80端口(HTTP默认端口),将来自域名的请求“反向代理”到你后端服务的实际端口(如 8080、5000 等),从而实现 通过域名直接访问而不带端口号。
nginx需要在我们的云服务器上安装,其中的配置文件nginx.conf 一般在linux系统的etc/nginx目录下可以找到,在其中的http{}下加上
server {
listen 80;
server_name 填上二级域名.一级域名.顶级域名(如www.asiabullfrog.com);
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
原理介绍,nginx会监听80端口,当我们访问80端口的时候实际上做了一个转发,访问的相当于还是8080端口,那么问题来了,我们还需要在网站上加上80端口吗? 答案是不需要了,因为当我们输入网址的时候前面的http协议默认就是访问的80端口,所以我们的网址就去掉了端口号(https访问的是443端口,这些都是默认的规定),相当于我们的网址直接输入http://www.asiabullfrog.com 就等于了http://www.asiabullfrog.com:80 因为浏览器会自动在前面加上http。
到此为止我们还是不能正常访问网址,是因为当使用默认端口80的时候,要通过备案才能正常访问网址,登录我们购买域名的供应商进行域名备案完成即可。
当我部署多个网站的时候还需要在购买域名吗?
如果我们不是为了太区分若干个网站,可以不重复购买域名,上述我们提到的域名解析,不单单只能解析一个,我们可以通过换主机记录字段的值来做到同一个域名同一个服务器部署多个网站,只不过是网址的二级域名不同,如http://a.asiabullfrog.com 是一个网站 b.asiabullfrog.com 又是一个网站,只需要在解析中再加一条记录,且在nginx.conf中在加一个server配置好server_name 即可。