Nginx使用总结

前期准备

windows

1.下载nginx, 点击下载
2. 解压并启动nginx, 双击nginx.exe
3. 测试是否启动,访问 http://127.0.0.1
4. 下载tomcat8111(端口为8111的tomcat)点击 这里下载
5. 下载tomcat8222(端口为8222的tomcat)点击这里下载

linux

# 安装Nginx源库
yum install epel-release
# 安装Nginx
yum install nginx
# 查看是否安装成功
nginx -v
# 查看配置文件地址
nginx -t 
# 启动
nginx
# 停止
nginx -s stop
# 重新加载配置文件
nginx -s reload

1. 反向代理

1.1 概念

先说正向代理,比如要访问youtube,但是不能直接访问,只能先找个翻墙软件,通过翻墙软件才能访问youtube. 翻墙软件就叫做正向代理。
所谓的反向代理,指的是用户要访问youtube,但是youtube悄悄地把这个请求交给bilibili来做,那么bilibili就是反向代理了。
在当前教程指的就是访问nginx,但是nginx把请求交给tomcat来做。

  • 反向代理: 请求端不知道具体的服务器是谁
  • 正向代理: 服务器端不知道请求端是谁

1.2 实现

修改 nginx.conf 文件

location / {
   proxy_pass http://127.0.0.1:8111;
}

location / 表示处理所有请求
proxy_pass http://127.0.0.1:8111 表示把请求都交给:http://127.0.0.1:8111 (tomcat的访问地址)来处理

1.3 访问

1、启动tomcat (端口为8111)
2、 重启nginx

nginx -s reload

3、 访问地址
http://127.0.0.1 就会发现已经反向代理到:http://127.0.0.1:8111

2. 动静分离

2.1 概念

所谓的动静分离就是指图片,css, js之类的都交给nginx来处理,nginx处理不了的,比如jsp 就交给tomcat来处理~

好处是nginx处理静态内容的吞吐量很高,比tomcat高多了,这样无形中提升了性能。

2.2 实现

修改nginx.conf文件

在locaction下面添加一个新的location:

location ~\.(css|js|png)$ {
   root D:/tomcat_8111/webapps/ROOT;
}

这表示所有的css js png访问都由nginx来做,访问的地址是:
D:/tomcat_8111/webapps/ROOT

jsp中:

3. 负载均衡

3.1 概念

负载均衡的概念就是当访问量很大的时候,一个 Tomcat 吃不消了,这时候就准备多个 Tomcat,由Nginx按照权重来对请求进行分配,从而缓解单独一个Tomcat受到的压力

3.2 启动两个tomcat

记得要修改两个tomcat的端口,两个tomcat的端口不能一样,
这里我们使用8111端口和8222端口

3.3 修改nginx.conf文件

首先增加一个upstream ,用来指向这两个tomcat

 upstream myServer{
	server	127.0.0.1:8111 weight=1 max_fails=3 fail_timeout=10s;
	server	127.0.0.1:8222 weight=2 max_fails=3 fail_timeout=10s;
}

最大失败数为3次,超时时间为10s

然后修改location,反向代理到上述配置。

location / {
   proxy_pass http://myServer;
}

weight表示权重,值越大,被分配到的几率越大, 但是这种会导致Session不能共享,可以通过 ip_hash 来解决这个问题,但是它不能与 weight混合使用

 upstream myServer{
 	ip_hash;
	server	127.0.0.1:8111;
	server	127.0.0.1:8222;
}

3.4 重启nginx并访问

4. session共享

4.1 概念

通过负载均衡课程,我们可以把请求分发到不同的 Tomcat 来缓解服务器的压力,但是这里存在一个问题: 当同一个用户第一次访问tomcat_8111 并且登录成功, 而第二次访问却被分配到了tomcat_8222, 这里并没有记录他的登陆状态,那么就会呈现未登录状态了,严重伤害了用户体验。

4.2 解决办法(一)

通过ip地址标记用户,如果多次请求都是从同一个ip来的,那么就都分配到同一个tomcat.
这样就不会出现负载均衡 session问题了. 处理手段也很简单,在nginx.conf 文件中修改upstream结点。如图所示在upstream最后加上ip_hash;就行了。

 upstream myServer{
 	ip_hash;
	server	127.0.0.1:8111;
	server	127.0.0.1:8222;
}

不过这种方案并不完美,当如下几种情况发生时就有问题:

  1. 大量请求来之某个局域网,那么相当于就没有负载均衡了
  2. 如果tomcat_8111 挂了,那么此时nginx只能把请求交给tomcat_8222,但是这里却没有记录session,用户体验依然受影响。

4.3 解决方法(二)

用Redis来存取session.

Redis是什么呢?说简单点就是个独立的Hashmap,用来存放键值对的。
这样当tomcat1需要保存session值的时候,就可以把它放在Redis上,需要取的时候,也从Redis上取。

那么考虑这个情景:

  1. 用户提交账号密码的行为被分配在了tomcat8111上,登陆信息被存放在redis里。
  2. 当用户第二次访问的时候,被分配到了tomcat8222上
  3. 那么此时tomcat8222就会从redis去获取相关信息,一看有对应信息,那么就会呈现登陆状态。

这样就规避了解决办法一: ip_hash里会出现的两种问题了。

4.3.1 启动redis

1.点击下载
2.解压
3.双击 start.bat 启动

4.3.2 下载jar包

Tomcat需要链接 redis,所以需要专门的jar包,这些包都放在了右上角的tomcat-redis.rar里。 一共
有3个jar包:
jedis-2.5.2.jar,
commons-pool2-2.0.jar,
tomcat-redis-session-manager1.2.jar。
点击 这里下载
下载解压后,放在tomat8111的lib目录下。注:不要放在webapp里面去了
下载解压后,放在tomat8222的lib目录下。注:不要放在webapp里面去了
两个tomcat都要放

4.3.3 修改context.xml文件

修改tomcat/conf/context.xml ,增加下面内容

  <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />  
  <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"  
   host="127.0.0.1"  
   port="6379"  
   database="0"  
   maxInactiveInterval="60" /> 

两个tomcat都要改

4.3.4 重启tomcat

两个tomcat都要重启

启动完就大功告成了

### Nginx使用方法:配置与基本操作指南 #### 安装 Nginx 在大多数 Linux 发行版上,可以借助包管理工具来安装 Nginx。以下是两种常见的操作系统及其对应的命令: - 对于基于 Debian/Ubuntu 的系统: ```bash sudo apt update sudo apt install nginx ``` - 对于基于 RedHat/CentOS 的系统: ```bash sudo yum install epel-release sudo yum install nginx ``` 上述命令分别适用于不同的 Linux 版本,能够完成 Nginx 的基础安装[^3]。 #### 测试并启动 Nginx 安装完成后,需要验证配置文件的有效性以及服务的状态。通过以下方式可实现 Nginx 的启动和状态检查: - 使用 `nginx -t` 来测试当前配置文件是否有语法错误。 - 如果无误,则可通过以下命令之一启动 Nginx: ```bash sudo systemctl start nginx ``` 或者, ```bash sudo service nginx start ``` 这些步骤确保了服务器上的 Nginx 能够正常运行,并对外提供服务[^1]。 #### 基础配置调整 Nginx 的核心功能依赖其配置文件 `/etc/nginx/nginx.conf` 或者位于子目录下的站点特定配置文件(通常存放在 `/etc/nginx/sites-available/` 和 `/etc/nginx/sites-enabled/` 中)。编辑这些文件时需要注意以下几个方面: - **监听端口**:默认情况下,Nginx 监听的是 HTTP 协议的 80 端口;如果要支持 HTTPS,则需额外设置 SSL/TLS 参数。 - **根路径定义**:指定网页资源所在的物理位置,例如: ```nginx root /var/www/html; ``` - **索引文件名**:告诉 Nginx 默认加载哪个页面作为入口点,默认通常是 `index.html` 文件。 当修改任何配置项之后,务必重新加载 Nginx 配置以使更改生效: ```bash sudo systemctl reload nginx ``` 此过程无需中断现有连接即可应用新设定[^4]。 #### 图形化界面辅助——Nginx-UI 为了简化复杂的配置工作流,部分开发者会选择引入图形化的管理工具如 Nginx-UI 。它提供了直观的操作面板用于监控性能指标、管理虚拟主机以及其他高级特性。不过,在正式环境中部署此类插件前应充分评估安全性风险,并遵循官方文档指导完成初始化安装与调试[^2]。 #### 总结 综上所述,从初始安装到具体参数调节再到可视化解决方案的选择,构成了完整的 Nginx 实践路线图。每一步都紧密关联着最终能否成功搭建高效稳定的 Web 应用环境的目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值