【狂神说笔记】 Nginx入门

 


1、简介

1.1、引入

简单的web项目中只需要一个tomcat部署在服务器上即可,但是当并发量增多,一台服务器满足不了需求了。

这个时候横向扩展,增加服务器,一个项目启动在不同的服务器上,而用户要访问这些服务器,如果直接访问session等的问题就会乱套,所以我们迫切需要一个代理服务器。

这个代理服务器可以帮助我们接受用户请求,然后按照用户请求规则转发到不同的服务器节点上,这个过程用户是无感知的。我们还希望它可以按照服务器的性能提供不同的权重选中,即负载均衡,所以我们选中了Nginx。

1.2、Nginx介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日

其特点展用内存少,并发能力强,官方测试数据能够支持50000个并发连接数的响应。

国内使用它的有很多,例如百度,新浪,京东,网易,淘宝等

2、Nginx作用

2.1、反向代理

首先什么是正向代理

例如VPN,安装在客户端,接受服务器的数据转发给客户端

而反向代理就是代理服务器端的,例如百度其实有很多服务器的,有时候访问出现卡断会自动切换服务器

2.2、负载均衡

  • Nginx提供的负载均衡策略有两种:内置策略和扩展策略。内置策略为轮询,加权轮询,iphash。扩展策略即天马行空

轮询:请求依次挨个服务器发送

加权轮询:性能更强的服务器会接受更多的请求

iphash:对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端的ip发送到同一台服务器处理,解决session不共享问题(这种方式也有问题,一般用Redis实现session共享)

动静分离:不需要后台处理的静态文件和动态资源按照一定规则拆分,根据静态资源的特点将其进行缓存操作。提高资源响应的速度。

3、Nginx安装部署

这里以linux为例:

1、添加yum源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

2、安装Nginx
yum install -y nginx
(nginx安装位置为/etc/nginx)

3、启动Nginx并设置开机自动运行
systemctl start nginx.service
systemctl enable nginx.service

4、Nginx参数配置和命令

4.1、命令

#启动nginx
cd nginx安装目录
./nginx
# 停止
nginx -s stop
# 安全退出
nginx -s quit
# 修改配置时的重启命令
service nginx reload 或者
nginx -s reload
# 查看nginx进程
ps aux | grep nginx

如果nginx访问不了,要排除防火墙的问题,如果是阿里云服务器这种还要排除安全组的问题

4.2、参数配置

这里拿某项目的配置文件举例

#全局配置
user root; #使用用户
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024; #并发数
}
#http配置
http {
#静态资源文件配置
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#代理配置
server {
listen 80;
server_name XXX.XXX.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
upstream xx {
//负载均衡配置
}
}

5、Nginx实战

这里简单记录一下狂神老师的搭建记录:

首先前提是有两个服务器,然后通过nginx实现反向代理

http {
#http 配置(http默认端口80; https默认端口443;)
upstream kuangstudy { #反向代理地址:http://tangguo
# 负载均衡配置
#服务器 服务器ip:端口 权重(1,2,3...)
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=1;
}
server {
listen 80; #端口配置
server_name localhost;
location / { #根路径 访问
root html;
index index.html index.htm;
proxy_pass http://kuangstudy; #反向代理
}
location /admin { #根路径下的/admin 访问
}
}
}
posted @   吴承勇  阅读(256)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示