Nginx是一款高性能http服务器,反向代理及电子邮件代理服务器。
官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。
Nginx 应用场景:
1、http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器。
2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用 nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
安装Nginx
nginx-1.12.2.zip解压即可
关闭cmd:nginx.exe -s stop
nginx可以通过命令行来启动,操作命令:
启动: start nginx.exe
停止: nginx.exe -s stop
重新加载: nginx.exe -s reload 修改了配置文件的时候需要重新加载.
配置文件nginx.conf
配置Niginx虚拟主机
一个server就相当于一个站点
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;
}
}
多个站点域名设置
所有站点都是80端口,不同域名访问不同站点
server {
listen 80;
server_name course.hrm.com;#域名
location / {
root course-html;#访问的文件夹
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name user.hrm.com;#域名
location / {
root user-html;#访问的文件夹
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
访问路径:course.hrm.com/home.html
访问路径:user.hrm.com/home.html
Nginx反向代理
1、静态资源(html、css、js)Nginx直接响应
2、访问动态资源就需要用到反向代理,去访问后端服务器
正向代理和反向代理区别:
正向代理:用户知道目标服务器地址,客户端代理,
反向代理:用户不知道目标服务器地址,目标服务器代理,
Nginx配置反向代理:
#反向代理
server {
listen 80;
server_name http://ip:端口;#访问zuul的域名
location / {
proxy_pass http://localhost:1020;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
Nginx实现zuul集群
负载均衡配置:
http:{
...
upstream zuuls{
#默认是轮询,负载均衡算法
#ip_hash; #负载均衡算法,同一ip访问同一地址
server 127.0.0.1:1020;#zuul集群的访问地址
server 127.0.0.1:1021;
}
#反向代理
server {
listen 80;
server_name server.hrm.com;#客户端访问的域名
location / {
proxy_pass http://zuuls;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}