终极目标
首先啊,明确我们要做什么。
我现在访问本地的项目是这样的。
http://localhost:8020/
我不想这样,我觉得这样一点也体现不出来我的B格。
我想改成这个样子。
www.xiaolaoben.com
怎么做到呢?往下瞅瞅吧!
明确思路
www.baidu.com,访问的是百度,为什么不是IP地址加端口号访问百度啊,为什么用域名?
如果用IP地址加端口号访问百度,IP是多少,端口号是多少?
这就涉及到域名解析的知识。
域名解析
我们访问百度的时候,输入的www.baidu.com,在请求传送中,是被解析成一个或多个IP的,有的同学问了,为什么会有多个IP,百度穷的只有一台服务器,支撑数亿次访问,你信吗?
域名解析共分为两步
1、本地域名解析:
浏览器在本机hosts文件中,查找域名映射的IP地址,如果有映射,就返回IP,没有映射,进行域名服务器解析。
你的计算机,注意要说计算机,不要说电脑,B格不能丢。。。
你的计算机中的hosts文件地址为:
C:/Windows/System32/drivers/etc/hosts
2、域名服务器解析
域名服务器,是什么,大家应该听说过,申请域名,购买域名这个发家致富的方法,举个例子,2000年,你申请几个域名
www.baidu.com
www.jd.com //注意,京东的不是www.jingdong.com。哇,好奇怪
www.taobao.com
www.aliyun.com
嘿嘿,那你就老牛了,绝了,简直上天了!
简而言之,域名解析器有对应的域名和IP映射关系。
破解域名
你有钱的话,可以去买一个域名,也不贵,便宜的几十,贵的几百。突然就想到了秋天的第一杯奶茶商标注册,秋天的第一个柚子,秋天的第一个包包,我的第一包华子呢?
去C盘找到你的文件,进去修改如下。
C:/Windows/System32/drivers/etc/hosts
Nginx反向代理解决端口问题
现在域名没问题了,啥意思
就是说,你访问www.xiaolaoben.com就相当于你的localhost了。
有的同学想,这不就可以了吗,已经实现了啊。
哈哈,人才,www.xiaolaoben.com:8020。这样访问也不错哈。
访问百度就这样访问:www.baidu.com:8090。perfect,成功访问。
**注意:**当我们访问www.baidu.com等任意一个域名的时候,端口默认都是80端口。包括阿里云等服务器,开放的端口必有80端口,浏览器访问localhost,默认访问的是localhost:80。
也就是说,我们访问的是80端口,但是我们真实想访问的是8020端口,这里使用Nginx反向代理来实现这个功能。
反向代理思路:用户访问请求时,放到到达Nginx,Nginx根据自定义的路由规则进行请求的转发,从而实现路由功能。
即用户访问的不是真实的服务器,而是代理服务器。
完成测试
1、下载nginx安装包,网上随便找个绿色免安装的,跟tomcat一样。
2、自定义nginx配置。
3、启动nginx服务器。
下边很关键,这里多说两句。
nginx.conf文件里边,我们加了这句话,我们可以直接在配置文件里边写的,但是因为太乱了,所以我们新建了一个文件夹。
那么我们自定义的文件夹里的配置文件怎么写呢,参考nginx.conf,将注释以及一些乱七八糟的去掉,看看长什么样。
include vhost/*.conf;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
include vhost/*.conf;
server {
listen 80;
server_name localhost;
location / { //这里指,url路径匹配到/时,进入nginx根目录下静态资源文件夹html.
root html;
index index.html index.htm;
}
#location ~ \.php$ { //这里指,url路径匹配到/xiao,/lao,/niu时,代理,到下边的路径。
# proxy_pass http://127.0.0.1; /proxy就是代理。
#}
}
所以应该知道,自定义匹配规则怎么写了吧。
方法一:
server {
listen 80;
server_name www.xiaolaoben.com;
location / {
proxy_pass http://localhost:8020;
proxy_connect_timeout 600;
proxy_read_timeout 5000;
}
}
方法二(小老犇版):
upstream xiao-laoben{
server 127.0.0.1:8020; //upstream策略,负载均衡。
//对应机器。
//如果你有另外的机器往下加。
}
server {
listen 80;
server_name www.xiaolaoben.com;
location / {
proxy_pass http://xiao-laoben;
proxy_connect_timeout 600;
proxy_read_timeout 5000;
}
}
修改完毕,接下来启动nginx就可以了,注意,只要你修改了配置文件,一定要重新启动。
命令行启动:
start nginx.exe 启动
nginx.exe -s stop 关闭
nginx.exe -s reload 重启
注意事项
强调:都看到了上边有个nginx.exe,最简单的方法就是双击一下,但是你们是计算机高手啊,怎么可以用这么low的方式呢,(不要用这种方式,你双击启动了,你关的时候,去任务管理器多麻烦,并且如果你关不掉,再用命令行会报错)。
报错:
nginx: [error] CreateFile() "D:\software\nginx-1.14.0-windows\nginx-1.14.0/logs/nginx.pid" failed (2: The system cannot find the file specified)
解决:
双击启动这种方式不会在logs/目录下创建nginx.pid文件,命令行就没问题了,只要你碰到这种错误,问题不大,想办法将你的nginx杀干净就好了。最简单的方法,重启电脑,哈哈哈。
访问一下,www.xiaolaoben.com。没毛病,success,学会的掌声。
最终成果:
······································································
创作不易,半夜三更,当你们跟女朋友们或者五指山们玩耍时,博主在努力的敲文字≧◇≦,若有帮助,请双击666,支持老铁一波。
你学废了吗