内容目录
Nginx安装部署
安装Nginx方式
- 安装nginx软件的方式有很多种,分为如下几种
- 源码编译(版本随意、安装复杂、升级繁琐)
- epel仓库(版本较低、安装简单、配置不易读)
- 官方仓库(版本较新、安装简单、配置易读,强烈推荐)
安装nginx依赖
yum install gcc gcc-c++ autoconf pcre pcre-devel make automake httpd-tools
配置nginx源
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
安装nginx服务
yum install nginx
systemctl enable nginx
systemctl start nginx
访问nginx服务
curl 127.0.0.1
检查nginx版本
nginx -v
nginx version: nginx/1.24.0
nginx -V #检查编译参数
nginx目录结构
- 为了让大家更清晰的了解
nginx
软件的全貌,可使用rpm -ql nginx
查看软件整体目录结构 - 如下表格整理了
nginx
比较重要的配置文件
nginx主配置文件
路径 | 类型 | 作用 |
---|---|---|
/etc/nginx/nginx.conf | 配置文件 | nginx主配置文件 |
/etc/nginx/conf.d/default.conf | 配置文件 | 默认网站配置文件 |
nginx代理配置文件
路径 | 类型 | 作用 |
---|---|---|
/etc/nginx/fastcgi_params | 配置文件 | Fastcgi代理配置文件 |
/etc/nginx/scgi_params | 配置文件 | scgi代理配置文件 |
/etc/nginx/uwsgi_params | 配置文件 | uwsgi代理配置文件 |
nginx编码配置文件
路径 | 类型 | 作用 |
---|---|---|
/etc/nginx/win-utf | 配置文件 | nginx编码转换映射文件 |
/etc/nginx/koi-utf | 配置文件 | nginx编码转换映射文件 |
/etc/nginx/koi-win | 配置文件 | nginx编码转换映射文件 |
/etc/nginx/mime.types | 配置文件 | content-type与扩展名 |
nginx管理命令文件
路径 | 类型 | 作用 |
---|---|---|
/usr/sbin/nginx | 命令 | nginx命令行管理终端工具 |
/usr/sbin/nginx-debug | 命令 | nginx命令行与终端调试工具 |
nginx日志相关文件
路径 | 类型 | 作用 |
---|---|---|
/var/log/nginx | 目录 | nginx默认存放日志目录 |
/etc/logrotate.d/nginx | 配置文件 | nginx默认的日志切割 |
nginx基本配置
nginx
主配置文件/etc/nginx/nginx.conf
是一个纯文本类型的文件nginx
整个配置文件是以区块的形式组织的。一般每个区块以一对大括号{}
来表示开始与结束
cat /etc/nginx/nginx.conf
# 全局
user www; # nginx的运行身份
worker_processes auto; # 启动的worker进程数量
error_log /var/log/nginx/error.log notice; # 错误日志的路径,notice以上
pid /var/run/nginx.pid; # 存储进程的pid number
events {
worker_connections 1024; # 一个worker最大连接数
}
# 主要负责接收与响应http请求
http {
include /etc/nginx/mime.types; # 支持的类型
default_type application/octet-stream; # 默认类型(下载的方式,提供下载包zip)
# 定义日志的格式
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;
include /etc/nginx/conf.d/*.conf; # 包含的子文件
}
global全局模块
user www; # nginx进程所使用的用户
worker_processes auto; # nginx运行的work进程数量(建议与cpu数量一致或auto)
error_log /log/nginx/error.log # nginx错误日志存放路径
pid /var/run/nginx.pid # nginx服务运行后产生的pid进程号
events事件模块
events {
worker_connections 25535; # 每个worker进程支持的最大连接数
use epoll; # 事件驱动模型,epoll默认
}
http核心模块
http { # http层开始
... # 使用server配置网站,每个server{}代表一个网站(简称虚拟主机)
server {
listen 80; # 监听端口,默认80
server_name xxx.com; # 提供的域名
access_log access.log; # 该网站的访问日志
# 控制网站访问的路径
location / {
root /usr/share/nginx/html; # 存放网站源代码的位置
index index.html index.htm; # 默认返回网站的文件
}
}
...
# 第二个虚拟主机配置
server {
...
}
include /etc/nginx/conf.d/*.conf; # 包含/etc/nginx/conf.d/目录下所有以.conf结尾的文件
# include作用是:简化主配置文件写太多造成臃肿,这样会让整体的配置文件更加的清晰
} # http层结束
核心模块总结
nginx
中的http、server、location
之间的关系http
标签主要用来解决用户的请求与响应server
标签主要用来响应具体的某一个网站location
标签主要用来匹配网站具体uri
路径
http{}
下允许有多个server{}
,一个server{}
下又允许有多个location{}
nginx虚拟主机
nginx虚拟主机概念
-
通常在企业中可能会有很多业务系统,那么多套业务服务如何使用
nginx
配置?
-
如果使用如上方式部署,则需要多台服务器配置nginx,但如果使用虚拟主机方式,则在同一个nginx上运行多套单独服务,这些服务是相互独立的。
-
简单来说,看似多套业务系统,实则可以运行在一台nginx服务上
nginx配置虚拟主机方式
- nginx配置虚拟主机有如下三种方式
- 基于主机多ip方式
- 基于端口的配置方式
- 基于多个hosts名称方式(多域名方式)
基于多ip虚拟主机实践
nginx
基于多IP
虚拟主机具体配置如下:cat /etc/nginx/conf.d/address.conf server { ... listen 10.0.0.10:80; ... } server { ... listen 172.16.1.10:80; ... }
基于多端口虚拟主机实践
nginx
基于多端口虚拟主机具体配置如下:
#仅修改listen监听端口即可,但不能和系统端口出现冲突
cat /etc/nginx/conf.d/port1.conf
server {
...
listen 80;
...
}
cat /etc/nginx/conf.d/port2.conf
server {
...
listen 81;
...
}
cat /etc/nginx/conf.d/port3.conf
server {
...
listen 82;
...
}
基于多域名虚拟主机实践
nginx
基于多host
虚拟主机具体配置如下:
cat /etc/nginx/conf.d/server1.conf
server {
listen 80;
server_name 1.xxx.net;
root /code/server1;
index index.html;
}
cat /etc/nginx/conf.d/server2.conf
server {
listen 80;
server_name 2.xxx.net;
root /code/server2;
index index.html;
}
留言