前言:
自从知道有nginx这个东西之后,一直都没有去做过多的了解,只是粗浅的知道能够代理域名、放置静态资源以便分担服务器压力这样的东西,连正向代理和反向代理的定义都不知道.
一、正向代理与反向代理
正向代理位于原始服务器和客户机之间,他的作用是代替客户机发请求,例如用于保护客户机,VPN技术.
反向代理则是在服务器端进行的代理操作,常见的有改变域名和请求分发.
改变域名其实就是为了外界访问,比方说www.baidu.com,如果通过最原始的IP进行访问,谁记得住这个IP是百度,那个IP是CSDN呢?
请求方法是当数据量变大的时候才会用到的,请看下面这个图:
nginx在接受到客户端的请求后,将请求分发到各个服务器上,以此达到减轻服务器压力的作用.
当然了,请求分发就意味着很多很多的问题,我们用一台服务器的时候,可以用session来检测用户的登录状态,但是服务器与服务器之间不共享session等这里就不一一列举了.
二、搭建一个基本的nginx,实现域名的改变(windows系统)
1.去官网上下载nginx:http://nginx.org/en/download.html
Mainline version: Mainline 是 Nginx 目前主力在做的版本,可以说是开发版(Youtube看官网视频 推荐开发者使用这个版本)
Stable version: 最新稳定版,生产环境上建议使用的版本
Legacy versions:遗留的老版本的稳定版
Source Code: 源码
Pre-Build Packages: 预编译版本
我下的是Mainline版本.下载完成解压.直接点.exe文件不太好使,还是用cmd敲命令行管事.
2.启动nginx服务器
先分享一下nginx常用的命令:
查看Nginx的版本号:nginx -V
启动Nginx:start nginx
快速停止或关闭Nginx:nginx -s stop
正常停止或关闭Nginx:nginx -s quit
配置文件修改重装载命令:nginx -s reload
好的,我们打开解压后的文件夹,按住shift的同时鼠标右键点击,打开powershell(windows10,其实cmd就可以,我只是省去了cd命令).输入完start nginx,弹了个黑框框,一眨眼的功夫就没了,当然如果你电脑够快可能自己都没注意到…
然后打开浏览器输localhost,应该就能看到跟nginx相关的网页了.
接下来我就准备着手改变域名了,用notepad++打开conf文件夹下的nginx.conf,该文件中具体每一项的意思具体请点击链接:
修改conf文件
server {
listen 80;
server_name www.gaimeng.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://www.gaimeng.com:8080;
}
#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;
#}
}
监听的是80端口,服务器用的是8080端口,然后重启: nginx -s -reload,结果发现报错了,说是没有找到.pid文件,其实是因为我的nginx没有启动,如果启动的话会自动创建这个文件.那么为什么没有启动呢,我这是因为80端口被其他程序占用了.在命令框里敲:netstat -aon | findstr :80 ,找到占用的进程后用任务管理器根据pid把它结束就可以了.
好的,现在重启却报了另一个错误,大概意思是找不到这个域名.这个时候只要去改windows自己的hosts文件就好了,hosts类似于预解析域名,查一下就知道了.hosts位置在 :
修改hosts文件
OK,现在重启nginx,在浏览器地址栏输入你设置的域名,就发现成功啦.