目录
目录
Ubuntu下Nginx的编译及安装
- 将nginx的压缩包nginx-xxx.tar.gz上传到Linux服务器
- 安装C语言的编译环境GCC
- 安装依赖包PCRE库
sudo apt-get install libpcre3-dev libpcre3
# 验证是否安装成功
pcre-config --version
- 安装依赖包zlib
1. 查看zlib是否已经安装
dpkg -l | grep zlib
2. sudo apt-get install zlib1g-dev
- 安装依赖包openssl
sudo apt-get install openssl libssl-dev
- 安装nginx
# --prefix指定安装路径
./configure --prefix=/usr/local/nginx
# 编译并安装
make && make install
# 查看nginx的安装位置
whereis nginx
# 检验是否安装成功
# 方式1:检查版本信息
cd /usr/local/nginx/sbin
./nginx -v
# 方式2:在浏览器中输入
http://主机IP:80
- 启动Nginx
# 方式1
cd /usr/local/nginx/sbin
./nginx
# 方式2:通过配置文件启动
# -c参数指定nginx.conf配置文件的位置
/usr/local/nginx/sbin/nginx -c
/usr/local/nginx/conf/nginx.conf
- 检查Nginx是否启动
# 查看是否启动成功
ps -ef | grep nginx
# nginx 体系结构由 master 进程和其 worker 进程组成
- 关闭nginx
# 方式1:优雅关闭Nginx,这种关闭方式会处理完请求后再关闭
kill -QUIT 主进程号的pid
# 方式2:快速关闭Nginx,这种关闭方式不管请求是否处理完成,直接关闭
kill -TERM 主进程号的pid
./nginx -s stop
- 重新加载nginx配置文件(无需重启服务,加载配置信息)
./nginx -s reload
Nginx的反向代理

Nginx配置文件说明及Nginx主要应用
1.Nginx的核心配置文件
核心配置文件即conf目录下的nginx.conf文件
#配置worker进程运行用户 nobody也是一个linux用户,一般用于启动程序,没有密码
user nobody;
#配置工作进程数目,根据硬件调整,通常等于CPU数量或者2倍于CPU数量
worker_processes 1;
#配置全局错误日志及类型,[debug | info | notice | warn | error | crit],默认是error
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid; #配置进程pid文件
###====================================================
#配置工作模式和连接数
events {
worker_connections 1024; #配置每个worker进程连接数上限,nginx支持的总连接数就等于worker_processes * worker_connections
}
###===================================================
#配置http服务器,利用它的反向代理功能提供负载均衡支持
http {
#配置nginx支持哪些多媒体类型,可以在conf/mime.types查看支持哪些多媒体类型
include 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日志及存放路径,并使用上面定义的main日志格式
#access_log logs/access.log main;
sendfile on; #开启高效文件传输模式
#tcp_nopush on; #防止网络阻塞
#keepalive_timeout 0;
keepalive_timeout 65; #长连接超时时间,单位是秒
#gzip on; #开启gzip压缩输出
###-----------------------------------------------
#配置虚拟主机
server {
listen 80; #配置监听端口
server_name localhost; #配置服务名
#charset koi8-r; #配置字符集
#access_log logs/host.access.log main; #配置本虚拟主机的访问日志
#默认的匹配斜杠/的请求,当访问路径中有斜杠/,会被该location匹配到并进行处理
location / {
#root是配置服务器的默认网站根目录位置,默认为nginx安装主目录下的html目录
root html;
#配置首页文件的名称
index index.html index.htm;
}
#error_page 404 /404.html; #配置404页面
# redirect server error pages to the static page /50x.html
#error_page 500 502 503 504 /50x.html; #配置50x错误页面
#精确匹配
location = /50x.html {
root html;
}
#PHP 脚本请求全部转发到Apache处理
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
#PHP 脚本请求全部转发到FastCGI处理
# 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;
#}
#禁止访问 .htaccess 文件
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
#配置另一个虚拟主机
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
#配置https服务,安全的网络传输协议,加密传输,端口443,运维来配置
#
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
2.Nginx主要应用
- 静态网站部署
- 负载均衡
- 静态代理
- 动静分离
- 虚拟主机
静态网站部署
1.示例:将ace-master这个静态网站部署到Nginx服务器上

- 修改nginx.conf配置文件
# 这里接收/ace-master请求,去磁盘目录/root下找资源
location /ace-master {
root /root;
index login.html;
}
- 重新加载nginx配置文件
/usr/local/nginx -s reload
- 浏览器中输入
http://IP地址:端口号/ace-master
进行访问,默认访问login.html
Nginx的负载均衡
1.概述
将多台机器组成一个集群对外提供服务,但是网站对外提供的访问入口只有一个,比如说www.baidu.com
,如何将用户的请求分发到集群中不同的机器上,就是负载均衡的作用。负载均衡通常是指将请求"均匀"分摊到集群中多个服务器节点上执行
https://upload-images.jianshu.io/upload_images/17728742-6e25dad3e5aa09d7.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240&ynotemdtimestamp=1715854427688
2.Nginx实现负载均衡案例
Nginx 通过在 nginx.conf文件进行配置即可实现负载均衡
- 在Linux服务器上部署两台Tomcat,其中一台端口号8080,另一台8090
// 修改conf目录下的server.xml配置文件中的多个端口号
// 只要两台tomcat中的以下端口不一样即可
1.停止服务端口
<Server port="8005" shutdown="SHUTDOWN">
2. HTTP端口8080(8443是https端口,不是强制https访问不用修改)
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
3.AJP端口8009
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />
- 将 myweb.war 上传到两台 tomcat 服务器安装目录的 webapps 目录下
- 启动两台tomcat,并在浏览器中访问进行测试
- 配置nginx(修改conf目录下的nginx.conf文件)
1. 在http模块下添加
upstream www.myweb.com{
server 120.55.87.98:8080;
server 120.55.87.98:8090;
}
2. 在server模块上添加
location /myweb{
proxy_pass http://www.myweb.com;
}
- 浏览器中访问nginx,地址
http://120.55.87.98/myweb/
进行测试
3. Nginx的负载均衡的多种实现方式
1.加权轮询:每个请求按一定比例分发到不同的后端服务器,weight值越大访问的比例越大,用于后端服务器性能不均的情况
# 在upstream块中添加weight参数
例如:
upstream backserver {
server 192.168.0.14 weight=5;
server 192.168.0.15 weight=2;
}
# 添加完成后执行 ./nginx -s reload
2.IP哈希(也叫IP绑定):每个请求按访问 ip 的 hash 值分配,这样每个IP发出的请求会固定访问一个后端服务器,可以解决会话 Session 丢失的问题
示例:
算法:hash("124.207.55.82") % 2 = 0, 1 #模2因为两台Tomcat
upstream backserver {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:9090;
}
- url哈希
- 最少连接:web 请求会被转发到连接数最少的服务器上
// 示例
upstream backserver {
least_conn;
server 127.0.0.1:8080;
server 127.0.0.1:9090;
}
4.负载均衡其他几个配置
upstream backserver {
server 127.0.0.1:9100;
#其它所有的非 backup 机器 down 的时候,才请求 backup 机器
# backup表示备份
# 该server对于服务升级有用
server 127.0.0.1:9200 backup;
}
upstream backserver {
server 127.0.0.1:9100;
#down 表示当前的 server 是 down 状态,不参与负载均衡
server 127.0.0.1:9200 down;
}
静态代理
把所有静态资源的访问改为访问 nginx,而不是访问 tomcat,这种方式叫静态代理。因为nginx更擅长于静态资源的处理,性能更好,效率更高。
- 方式1:在 nginx.conf的location中配置静态资源的后缀
当访问静态资源,则从 linux 服务器/opt/static 目录下获取(举例)
location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid
|doc|ppt|pdf|xls|mp3|wma)$ {
root /opt/static;
}
说明:
~ 表示正则匹配的开始,也就是说后面的内容可以是正则表达式匹配
➢ 第一个点 . 表示任意字符
➢ *表示一个或多个字符
➢ \. 是转移字符,是后面这个点的转义字符
➢ | 表示或者
➢ $ 表示结尾
- 方式2:在nginx.conf的location中配置静态资源所在目录实现
当访问静态资源,则从 linux 服务器/opt/static 目录下获取(举例)
location ~ .*/(css|js|img|images) {
root /opt/static;
}
将静态资源放入 /opt/static目录下,然后用户访问时由 nginx 返回这些静态资源
xxx/css
xxx/js
xxx/img
xxx/images
动静分离
- 动态资源,如 jsp 由 tomcat 或其他 web 服务器完成
- 静态资源,如图片、css、js 等由 nginx 服务器完成
虚拟主机
虚拟主机,就是把一台物理服务器划分成多个“虚拟”的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配置多个网站。
Nginx 提供虚拟主机的功能,就是为了让我们不需要安装多个 Nginx,就可以运行多个域名不同的网站。
Nginx 下,一个 server 标签就是一个虚拟主机。nginx 的虚拟主机就是通过nginx.conf中server节点指定的,想要设置多个虚拟主机,配置多个 server 节点即可;
1.配置虚拟主机方式
- 基于端口的虚拟主机(了解)
- 基于域名的虚拟主机
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)