内容目录

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配置?
    file

  • 如果使用如上方式部署,则需要多台服务器配置nginx,但如果使用虚拟主机方式,则在同一个nginx上运行多套单独服务,这些服务是相互独立的。

  • 简单来说,看似多套业务系统,实则可以运行在一台nginx服务上
    file

nginx配置虚拟主机方式

  • nginx配置虚拟主机有如下三种方式
  1. 基于主机多ip方式
  2. 基于端口的配置方式
  3. 基于多个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;
}
最后修改日期: 2024年3月28日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。