8-2 Nginx服务
Nginx介绍
Nginx是一个高性能的HTTP和反向代理服务器。Nginx以其高并发处理能力、稳定性、丰富的功能,以及对内存的高效利用而闻名。
(课外)这个软件的花边新闻:
Nginx之父被抓,程序员业余开发的作品属于公司?
起源于俄罗斯的Nginx禁止俄参与项目
Apache VS Nginx
特性 | Apache | Nginx | 说明 |
---|---|---|---|
架构 | 进程模型 | 事件驱动模型 | Apache为每个请求创建一个新的子进程,Nginx使用一个进程异步处理多个请求。 |
并发处理 | 较低 | 较高 | Nginx在高并发场景下表现更优,适合处理大量同时连接。 |
静态文件处理 | 较慢 | 较快 | Nginx在处理静态文件方面效率更高,适合作为静态文件服务器。 |
动态内容处理 | 较灵活 | 需要配置 | Apache对动态内容处理更为灵活,Nginx需要搭配FastCGI等模块。 |
配置复杂度 | 高 | 低 | |
典型应用场景 | 复杂网站,虚拟主机,模块化配置 | 高并发网站,反向代理,负载均衡,静态文件服务器 |
安装
离线包从虚拟机复制到虚拟机的文件管理器中
解压缩
tar -zxvf nginx-installer.tar.gz安装
rpm -iv --nodeps --force ./nginx-installer/*.rpm
配置
主配置
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下。缺点是这个服务器只能有这一个网站,如果要部署多个网站上,网站间应该以文件夹区分并按照下方操作。)
从网上下载静态网站文件。
网站文件夹放入 /usr/share/nginx/html 目录下。
修改配置
/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/你的网站文件夹名; ... ...(可选)文件权限
启动服务
启动服务
systemctl restart nginx关闭防火墙(本地测试不需要操作)
systemctl stop firewalld关闭selinux。必需关闭,否则导致403响应。
setenforce 0
客户端测试
本地测试。虚拟机内浏览器访问http://127.0.0.1:80 ,协议和80端口号可以省略即127.0.0.1。
局域网测试。宿主机或旁边小伙伴机器访问服务器IP,形如172.31.5.100。
拓展
跟上一节的内容很像,完成的比较早的同学回顾第四章的DNS服务,搭建DNS服务,使得访问http://apple.com
时可以访问到自建网页。