网络服务器配置与管理教辅书 Help

8-2 Nginx服务

Nginx介绍

Nginx是一个高性能的HTTP和反向代理服务器。Nginx以其高并发处理能力、稳定性、丰富的功能,以及对内存的高效利用而闻名。

Apache VS Nginx

特性

Apache

Nginx

说明

架构

进程模型

事件驱动模型

Apache为每个请求创建一个新的子进程,Nginx使用一个进程异步处理多个请求。

并发处理

较低

较高

Nginx在高并发场景下表现更优,适合处理大量同时连接。

静态文件处理

较慢

较快

Nginx在处理静态文件方面效率更高,适合作为静态文件服务器。

动态内容处理

较灵活

需要配置

Apache对动态内容处理更为灵活,Nginx需要搭配FastCGI等模块。

配置复杂度

典型应用场景

复杂网站,虚拟主机,模块化配置

高并发网站,反向代理,负载均衡,静态文件服务器

在线安装

软件名: nginx

  1. 换源。

    sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-* sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=https://mirrors.cloud.tencent.com|g" /etc/yum.repos.d/CentOS-* yum makecache
  2. 在线安装

    yum install nginx

配置

  1. 主配置

    nano /etc/nginx/nginx.conf
    # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { 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; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; # 👇经常修改的是这部分。 server { listen 80 default_server; # 监听端口 listen [::]:80 default_server; server_name _; # 三级域名,如果是www,那就是访问www.example.com时的请求会被匹配。 root /usr/share/nginx/html; # 网站根目录 # index index.html # 默认网站入口为目录下的index.html # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { # 请求与服务器文件网站目录间的映射关系。/,即访问http://127.0.0.1/时找服务器/usr/share/nginx/html/,访问http://127.0.0.1/index.html时照/ussr/sharepplication } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } # 👆 # Settings for a TLS enabled server. # # server { # listen 443 ssl http2 default_server; # listen [::]:443 ssl http2 default_server; # server_name _; # root /usr/share/nginx/html; # # ssl_certificate "/etc/pki/nginx/server.crt"; # ssl_certificate_key "/etc/pki/nginx/private/server.key"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10m; # ssl_ciphers PROFILE=SYSTEM; # ssl_prefer_server_ciphers on; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # location / { # } # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } }

替换为自建网页

  1. 从网上下载静态网站文件。

  2. 网站文件夹放入 /usr/share/nginx/html 目录下。

  3. 修改配置/etc/nginx/nginx.conf

    ... server { listen 80 default_server; listen [::]:80 default_server; server_name _; # 👇修改前为"root /usr/share/nginx/html" root /usr/share/nginx/html/你的网站文件夹名; ... ...
  4. (可选)文件权限

chown -R nginx:nginx /usr/share/nginx/html

启动服务

  1. 启动服务

    systemctl start nginx systemctl status nginx
  2. 关闭防火墙(本地测试不需要操作)

    systemctl stop firewalld
  3. 关闭selinux。必需关闭,否则导致403响应

    setenforce 0

客户端测试

  1. 本地测试。虚拟机内浏览器访问http://127.0.0.1:80 ,协议和80端口号可以省略即127.0.0.1

    8 2

  2. 局域网测试。宿主机或旁边小伙伴机器访问服务器IP,形如172.31.5.100

    8 2

拓展

搭建DNS服务,使得访问http://apple.com时可以访问到自建网页。

(课外)俄乌战争时关于这个软件的新闻,引起关于开源技术是否会被政治裹挟的思考:
Nginx之父被抓,程序员业余开发的作品属于公司?
起源于俄罗斯的Nginx禁止俄参与项目

10 十一月 2025