服务器配置教案 Help

8-2 Nginx服务

Nginx介绍

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

(课外)这个软件的花边新闻:
Nginx之父被抓,程序员业余开发的作品属于公司?
起源于俄罗斯的Nginx禁止俄参与项目

Apache VS Nginx

特性

Apache

Nginx

说明

架构

进程模型

事件驱动模型

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

并发处理

较低

较高

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

静态文件处理

较慢

较快

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

动态内容处理

较灵活

需要配置

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

配置复杂度

典型应用场景

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

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

安装

  1. 离线包从虚拟机复制到虚拟机的文件管理器中

  2. 解压缩

    tar -zxvf nginx-installer.tar.gz
  3. 安装

    rpm -iv --nodeps --force ./nginx-installer/*.rpm

配置

  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 { # } # } }

替换为自建网页

(可选,如果不想做第3步修改配置,把第2步网站html代码文件夹根目录下的文件粘贴到/usr/share/nginx/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 restart 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服务,搭建DNS服务,使得访问http://apple.com时可以访问到自建网页。

Last modified: 25 十一月 2024