软件:nginx

这是本文档旧的修订版!


Nginx

HTTP服务器:Nginx可以作为独立的Web服务器来托管网站和应用程序。

反向代理服务器:它可以将客户端请求转发给后端服务器,并将响应返回给客户端,从而实现负载均衡和提高系统的可用性。

负载均衡:通过在多个后端服务器之间分配流量,确保系统能够处理大量并发请求。

静态内容服务:Nginx擅长快速提供静态文件(如HTML页面、图片、CSS和JavaScript文件)。

缓存:支持对动态和静态内容进行缓存,以减少后端服务器的负载并加快响应速度。

SSL/TLS终止:可以处理SSL/TLS加密和解密,减轻后端服务器的负担,并提高安全性。

邮件代理:虽然较少使用,但Nginx也可以配置为邮件代理服务器。

原理

Nginx采用了事件驱动(event-driven)和异步非阻塞I/O模型,这使得它能够在处理大量并发连接时保持高效性能。以下是其核心机制的一些关键点:

事件驱动架构:Nginx使用一个主进程管理多个工作进程。每个工作进程负责监听网络事件,并在事件发生时处理请求。

异步非阻塞I/O:Nginx不会为每个连接创建新的进程或线程,而是使用异步I/O操作,这意味着它可以同时处理成千上万的并发连接。

模块化设计:Nginx的核心功能相对简单,大部分功能是通过模块实现的。这些模块可以根据需要加载或卸载,提供了高度的灵活性。

#安装Nginx服务器

#卸载apache2
apt purge apache2 apache2-bin apache2-data apache2-utilsi
#安装Nginx环境依赖
apt -y install curl gnupg2 ca-certificates lsb-release debian-archive-keyring
#安装
apt -y install nginx
#启动
systemctl start nginx
systemctl enable nginx
 
#使用浏览器访问localhost或ip访问成功
http://123.0.0.1/
 
apt -y install php php-fpm
grep '^listen =' /etc/php/*/fpm/pool.d/www.conf
# 如果返回sock文件地址说明默认监听sock文件
listen = /run/php/php*-fpm.sock
# 如果返回IP:port 说明默认监听本地IP端口  
listen = 127.0.0.1:9000
# nginx的ffastcgi_pass `<listen>` 编写规则,sock必须加unix:  
fastcgi_pass  unix:/run/php/php8.4-fpm.sock;  
fastcgi_pass  127.0.0.1:9000;  
 
 
#移除默认站点配置
sudo rm -f /etc/nginx/sites-enabled/*
#写入配置文件 http协议80端口转https协议443端口
sudo tee /etc/nginx/conf.d/default.conf <<-'EOF'
server {
    listen [::]:80; # IPv6
    listen 80;
    server_name localhost;
    # Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
    location / {
        return 301 https://$host$request_uri;
    }
}
EOF
 
sudo vi /etc/nginx/conf.d/default.conf
server {
    listen  [::]:433; # IPv6
    listen       433;
    server_name  localhost;
    root /var/www/html;
    location / {
            index index.php index.html index.htm;
    }
    location ~ .php$ {
            root /var/www/html;
            fastcgi_pass <listen>;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
    }
    # error_page  404              /404.html;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
 
vi /etc/nginx/nginx.conf
# 把include /etc/nginx/sites-enabled/* 注释
# include /etc/nginx/sites-enabled/*
按`esc`键,输入`:wq`退出
 
在终端执行命令
#配置是否正确
nginx -t
#查看有没有ok和successful
#nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
#nginx: configuration file /etc/nginx/nginx.conf test is successful
#重启
sudo systemctl restart nginx
 
 
 
 
#无法转跳网页
sudo vi /etc/nginx/nginx.conf
#在location /大括号内,添加如下代码
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
#重启
sudo systemctl restart nginx
#默认网站根目录:
Nginx: /usr/share/nginx/html
Apache: /var/www/html
 
Nginx的日志文件默认存放在/var/log/nginx/。
Nginx的主配置文件默认/etc/nginx/nginx.conf。
Nginx默认读取/etc/nginx/conf.d目录下所有以.conf为后缀的附加配置文件

登录数字证书管理服务控制台

在左侧导航栏,选择证书管理 > SSL证书管理

在个人测试证书(原免费证书)页签,单击立即购买

在立即购买面板,保持默认选项,仔细阅读并勾选服务协议,单击立即购买并完成支付

阿里云→数字证书管理服务→SSL证书管理→个人测试证书(原免费证书)→更多→下载

在终端执行命令

#查看nginx的配置文件路径,记录nginx.conf路径

nginx -t

#创建证书目录,命名为cert

mkdir /etc/nginx/conf.d/cert

#将证书文件和私钥文件上传到Nginx服务器的证书目录

mv 17312297_sujj.wiki_nginx.zip /etc/nginx/conf.d/cert/

#解压

unzip /etc/nginx/conf.d/cert/17312297_sujj.wiki_nginx.zip

#配置

vi /etc/nginx/conf.d/default.conf

修改default.conf文件

listen 443 ssl;

#填写证书文件绝对路径
ssl_certificate /etc/nginx/conf.d/cert/sujj.wiki.pem;
#填写证书私钥文件绝对路径
ssl_certificate_key /etc/nginx/conf.d/cert/sujj.wiki.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m; 
#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
#表示优先使用服务端加密套件。默认开启
ssl_prefer_server_ciphers on;

#将80重定向https
server {
    listen 80;
    #填写证书绑定的域名
    server_name <YOURDOMAIN>;
    #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    rewrite ^(.*)$ https://$host$1;
    location / {
        index index.php index.html index.htm;
    }
}

按`esc`键,输入`:wq`退出

  • 软件/nginx.1761048634.txt.gz
  • 最后更改: 2025/10/21 20:10
  • admin