目录
前言
- 传统的web项目【war包】
- springboot项目【jar包】
一、Nginx的简介
1. 什么是Nginx?
Nginx(发音为"engine-x")是一个高性能的开源Web服务器和反向代理服务器。它是由Igor Sysoev开发的,最初发布于2004年。Nginx的设计重点是高性能、高并发、低内存消耗以及稳定性,因此在构建高流量和高可用性的网络应用和网站时非常流行。
2. Nginx能解决什么问题?
-
高性能Web服务器:Nginx是一个快速的Web服务器,可以处理大量并发请求,同时占用较少的内存资源。它是为了提供Web内容而设计的,可以有效分发HTTP请求并返回响应。
-
反向代理服务器:Nginx可以充当反向代理服务器,用于负载均衡、缓存、SSL终端、安全策略、减轻应用服务器负载等。它允许多个后端服务器共享负载,从而提高可用性和性能。
-
静态资源服务器:Nginx可以用于提供静态资源(如图片、CSS、JavaScript文件)的快速交付,减轻Web应用服务器的负担。
-
缓存代理:Nginx支持缓存,可以缓存Web页面内容,加快响应速度,并减少对后端服务器的请求。
-
URL重写和重定向:Nginx提供了强大的URL重写和重定向功能,可以优化URL结构并改善SEO。
3. Nginx的使用场景有哪些?
-
Web服务器:用于提供静态和动态内容的快速Web服务器。
-
反向代理:用于负载均衡多个应用服务器,提高性能和可用性。
-
缓存代理:用于缓存Web页面内容,减轻应用服务器负载。
-
SSL终端:用于SSL/TLS加密和解密,保护数据传输。
-
URL重写和重定向:用于URL的优化和管理。
-
安全策略:用于防止DDoS攻击、防火墙、反爬虫等安全策略。
-
WebSocket支持:用于实现WebSocket协议,支持实时通信。
-
流媒体服务:用于流媒体传输和代理。
-
其他(略)
4. Nginx的优点和缺点
优点:
- 高性能:Nginx以其卓越的性能而闻名,能够处理大量并发连接和高流量。
- 低内存消耗:相对于其他Web服务器,Nginx占用更少的内存资源。
- 可扩展性:Nginx支持模块化架构,可以通过添加模块来扩展功能。
- 负载均衡:Nginx支持多种负载均衡策略,可用于多个应用服务器的负载均衡。
- 反向代理:Nginx可以用作反向代理服务器,提高了应用的安全性和性能。
- 灵活的配置:Nginx的配置文件采用简洁的语法,易于理解和配置。
缺点:
- 复杂性:Nginx的高级配置需要一定的学习和经验,初学者可能会感到复杂。
- 不支持直接处理动态内容:虽然Nginx能够处理FastCGI应用,但它不是一个完整的应用服务器,不能直接运行动态脚本。
- 不支持处理数据库查询:Nginx不支持直接处理数据库查询,因此通常需要与应用服务器(如PHP-FPM)一起使用。
二、Nginx的下载安装
1. Windows下安装Nginx
1.1 下载nginx
1.2 启动nginx
- 直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。
- 打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe ,回车即可。
1.3 检查nginx是否启动成功
1.4 配置监听
Nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果80端口被占用 可以修改为未被占用的端口即可。 当我们修改了nginx的配置文件nginx.conf 时,不需要关闭nginx后重新启动nginx,只需要执行命令 nginx -s reload 即可让改动生效
1.5 关闭nginx
- 输入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)
- 使用taskkill taskkill /f /t /im nginx.exe
注:
- taskkill是用来终止进程的,
- /f是强制终止 .
- /t终止指定的进程和任何由此启动的子进程。
- /im示指定的进程名称
2. Linux下安装Nginx
2.1 安装gcc
yum install gcc - c ++
2.2 PCRE pcre-devel 安装
yum install - y pcre pcre - devel
2.3 zlib 安装
yum install - y zlib zlib - devel
2.4 OpenSSL 安装
yum install - y openssl openssl - devel
2.5 下载安装包
2.6 解压
使用命令进行解压:
tar - zxvf nginx-1.25.2.tar.gz
2.7 配置
. / configure
make
make install
2.8 Nginx常用命令
1 cd / usr / local / nginx / sbin /2 . / nginx 启动3 . / nginx - s stop 停止4 . / nginx - s quit 安全退出5 . / nginx - s reload 重新加载配置文件6 ps aux | grep nginx 查看 nginx 进程
2.9 检查启动结果
访问服务器ip:80,出现如下界面:
2.10 问题解决
1. 如果出现访问不了的问题,需要检查服务器端口是否开启。
1 # 开启2 service firewalld start3 # 重启4 service firewalld restart5 # 关闭6 service firewalld stop7 # 查看防火墙规则8 firewall - cmd -- list - all9 # 查询端口是否开放10 firewall - cmd -- query - port = 8080 / tcp11 # 开放 80 端口12 firewall - cmd -- permanent -- add - port = 80 / tcp13 # 移除端口14 firewall - cmd -- permanent -- remove - port = 8080 / tcp15 # 重启防火墙 ( 修改配置后要重启防火墙 )16 firewall - cmd -- reload17 # 参数解释18 1 、 firwall - cmd :是 Linux 提供的操作 firewall 的一个工具;19 2 、 -- permanent :表示设置为持久;20 3 、 -- add - port :标识添加的端口;
2. 如果是使用阿里云或者其他云服务器,记得去安全组中开启对应的端口。
三、Nginx的使用
1. Nginx核心配置详解
user nginx; # 设置Nginx运行的用户
worker_processes 2; # 指定Nginx worker进程的数量
error_log /var/log/nginx/error.log warn; # 错误日志的路径和级别
pid /var/run/nginx.pid; # 存储Nginx主进程的PID文件
events {
worker_connections 1024; # 每个worker进程可以处理的最大连接数
}
http {
include /etc/nginx/mime.types; # 包含MIME类型定义文件
default_type application/octet-stream; # 默认MIME类型
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; # 启用sendfile,提高文件传输性能
tcp_nopush on; # 启用TCP NOPUSH选项
keepalive_timeout 65; # 客户端空闲连接超时时间
client_max_body_size 20M; # 允许客户端上传的最大请求体大小
server {
listen 80; # 监听的端口号
server_name example.com; # 服务器的域名或IP地址
location / {
root /usr/share/nginx/html; # 静态文件根目录
index index.html index.htm; # 默认首页文件
}
error_page 500 502 503 504 /50x.html; # 错误页面配置
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
注:其中我们主要需要修改的是server中的配置。
2. 使用Nginx反向代理Apache、Tomcat
系统环境:阿里云服务器(Alibaba Cloud Liunx 3)
远程连接工具:FinalShell
打开nginx.conf配置文件进行配置。可以通过vim命令打开,也可以通过工具直接打开并修改文件。
找到需要配置的地方,然后进行修改,如下:
访问服务器ip:80,http默认是80端口,可以省略。默认跳转的是apache的地址(这里将apache的端口号修改为了81,因为其默认端口80,如果同时使用80会产生冲突),访问ip/music/跳转的是tomcat服务器下的某个项目,其中music是tomcat中一个项目的上下文路径。
如果要配置负载均衡,可以在apache-servers{}中添加其他的服务器ip和端口号,默认是采用轮询的方式,可以根据需要和服务器性能配置加权轮询。
拓展:配置apache的环境可以参考阿里云的开发手册(阿里云部署LAMP环境)
四、总结
总体来说,Nginx是一个功能强大、高性能的Web服务器和反向代理服务器,适用于多种应用场景。其优点包括高性能、低内存消耗、可扩展性和负载均衡,但需要一定的学习和经验来充分发挥。