标签 Nginx 下的文章 - 🥝 E 家 分 享 🥝
首页
📋 留言板
🔗 友情链接
🛠️ E家百宝箱
❤️ 关于
推荐
🔍 VPS监控
🐉 青龙面板
💽 E家网盘
----------
🔗 CloudFlare
🔗 甲骨文云
🔗 RackNerd
搜 索
1
自动提取 ChromeGo 一键翻墙包内的免费节点
145 阅读
2
【汇总:免费节点 - 每周更新】
113 阅读
3
GigaFile - 日本免费大文件加密分享服务,最长保留文档100天
71 阅读
4
【E家分享月刊系列】2024-12
56 阅读
5
CloudFlare WARP 免费 VPN 搭建教程
55 阅读
精选网站
网站搭建
科学上网搭建
有感而发
软件技巧
Excel技巧
WordPress技巧
登录
搜 索
标签搜索
WordPress
脚本
GitHub
科学上网
哈佛管理导师
E家分享月刊系列
V2ray
Mac软件
AI
Cloudflare
Docker
免费节点
建站在线工具
Excel技巧
Notion
Nginx
ChatGPT
图像编辑
免费图床
网盘资源
E家之长
累计撰写
195
篇文章
累计收到
245
条评论
首页
栏目
精选网站
网站搭建
科学上网搭建
有感而发
软件技巧
Excel技巧
WordPress技巧
页面
📋 留言板
🔗 友情链接
🛠️ E家百宝箱
❤️ 关于
推荐
🔍 VPS监控
🐉 青龙面板
💽 E家网盘
----------
🔗 CloudFlare
🔗 甲骨文云
🔗 RackNerd
用户登录
登录
找到
5
篇与
Nginx
相关的结果
2023-08-01
前端页面部署方式的全面解析与比较
本文作者:Expo 转载地址:https://sspai.com/post/81564前端页面简介部署前端页面有多种方法,你可以选择最适合你项目需求和你自己技术背景的方式。以下是一些常见的部署方式:FTP上传: 这是最传统的方式,将你的前端文件(HTML,CSS,JavaScript等)上传到你的web服务器。大多数的web主机提供FTP访问,这也是小型项目的快速部署方式。使用Git: 如果你的服务器支持Git,你可以设置一个Git仓库,并使用**git push**命令部署你的前端页面。这种方式方便版本控制,也支持多人协作。使用SSH: 可以通过SSH将你的文件推送到你的服务器,这个过程可以通过脚本自动化。使用云服务: 像AWS S3,Google Cloud Storage,Azure Storage等服务可以托管静态网站,通常它们提供了很好的性能和安全性。使用专门的前端部署服务: 服务如Netlify,Vercel等,这些平台通常提供一站式服务,包括版本控制,持续集成,HTTPS和CDN等。使用CDN服务: 这些服务可以将你的站点部署到全球的服务器上,加速访问速度。例如,Cloudflare,Akamai等。容器化部署: 使用如Docker等工具,将前端应用容器化,然后在Kubernetes等容器编排平台进行部署。以上的部署方式有的适合小型项目,有的适合大型项目,有的需要更多的技术知识,选择哪一种方式取决于你的具体需求。Nginx配置 Nginx 来为前端页面提供服务通常需要以下步骤:步骤1:上传代码首先,你需要将你的前端代码上传到服务器上的某个目录,比如 **/var/www/mywebsite**。步骤2:创建 Nginx 配置文件Nginx 的配置文件通常位于 **/etc/nginx/** 目录下,具体路径可能会因服务器的不同而略有不同。在该目录下,你通常会找到一个叫做 **sites-available** 的目录。在这个目录下,你可以为每个网站创建一个配置文件。例如,你可以创建一个新的配置文件,命名为 **mywebsite**:sudo nano /etc/nginx/sites-available/mywebsite步骤3:编辑 Nginx 配置文件在新建的配置文件中,你可以输入以下内容来配置你的前端页面:server { listen 80; server_name your_domain_or_IP; location / { root /var/www/mywebsite; index index.html; try_files $uri $uri/ =404; } }其中 **your_domain_or_IP** 应该替换为你的域名或者IP地址,**/var/www/mywebsite** 应该替换为你的代码所在的目录。此配置意味着 Nginx 将监听80端口,并为所有指向你的域名或IP地址的请求提供服务。默认文档为 index.html,如果请求的文件不存在,Nginx 将返回 404 状态码。步骤4:启用网站创建并编辑完配置文件后,你需要创建一个到 **sites-enabled** 目录的符号链接来启用你的网站:sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/步骤5:检查配置文件在重启 Nginx 之前,你应该检查你的配置文件有没有语法错误:sudo nginx -t如果没有错误,你会看到类似这样的输出:nginx: configuration file /etc/nginx/nginx.conf test is successful步骤6:重启 Nginx最后,你需要重启 Nginx 来使你的配置生效:sudo service nginx restart现在你的前端页面应该可以通过你的域名或IP地址访问了。注意,如果你的服务器有防火墙,你可能需要配置防火墙来允许 HTTP 和 HTTPS 流量。更完整的 Nginx 配置首先,你需要为你的域名获取一个 SSL 证书,你可以使用 Let's Encrypt 提供的免费证书。配置文件可能如下:server { listen 80; server_name your_domain_or_IP; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name your_domain_or_IP; ssl_certificate /etc/letsencrypt/live/your_domain_or_IP/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your_domain_or_IP/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; location / { root /var/www/mywebsite; index index.html; try_files $uri $uri/ =404; } location ~* \\.(jpg|jpeg|png|gif|ico|css|js|pdf)$ { expires 30d; } gzip on; gzip_vary on; gzip_min_length 10240; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml; gzip_disable "MSIE [1-6]\\."; }以下是这个配置的一些解释:第一个 **server** 块监听80端口,也就是HTTP的默认端口,然后把所有的请求重定向到HTTPS。第二个 **server** 块监听443端口,也就是HTTPS的默认端口。**ssl_certificate** 和 **ssl_certificate_key** 指向你的SSL证书和私钥的位置。**ssl_protocols** 和 **ssl_ciphers** 定义了你服务器支持的SSL协议和加密套件。**location /** 块定义了你的网站的根目录和默认文件,以及如何处理不存在的路径。**location ~* \\.(jpg|jpeg|png|gif|ico|css|js|pdf)$** 块定义了对于静态文件如图片,CSS文件,JavaScript文件等,客户端应该缓存30天。**gzip** 相关的行启用了gzip压缩,并定义了哪些类型的文件应该被压缩。这只是一个基本的配置样例,你可以根据你的需求进行修改。有许多其他的选项可以配置,例如负载均衡,反向代理,HTTP/2 支持等。你可以查看 Nginx 的文档来了解更多信息。负载均衡使用 Nginx 来做负载均衡的实现非常直接。以下是一个简单的示例来说明如何配置 Nginx 来实现对多个服务器的负载均衡。假设你有两个或更多的应用服务器实例,它们分别托管在不同的 IP 地址或主机名下**。你可以在 Nginx 配置文件中设置一个 upstream 模块,然后在 server 模块中将请求反向代理到这个 upstream。**首先,你需要在你的 Nginx 配置文件(一般位于 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/ 目录下的某个文件)中定义一个 upstream。例如:http { upstream myapp { server app1.example.com; server app2.example.com; } ... }在这个例子中,myapp 是你定义的 upstream 的名字,app1.example.com 和 app2.example.com 是你的应用服务器的地址。然后,在 server 模块中,你可以将来自客户端的请求代理到这个 upstream:server { listen 80; location / { proxy_pass <http://myapp>; } }在这个例子中,所有来自客户端的 HTTP 请求(即 :80 端口的请求)都会被 Nginx 转发到定义的 upstream(即 myapp)。Nginx 默认使用**轮询(round-robin)算法将请求分配给 upstream 中的服务器,你也可以配置其他的负载均衡算法,如最少连接(least\_conn)**或 IP 哈希(ip\_hash)。这样,Nginx 就会把请求均衡地转发到你的各个应用服务器实例上,实现负载均衡。注意这个配置对于前端静态页面来说可能不太必要,因为静态页面通常不会对服务器产生太大负载,但对于动态应用来说是非常有用的。Docker使用 Docker 来部署前端应用是一种很好的方式,因为它可以将你的应用及其依赖项打包到一个独立、可移植的容器中,可以在任何安装了 Docker 的环境中运行。以下是使用 Docker 部署一个基本的静态前端页面的步骤:步骤1:创建 Dockerfile在你的项目根目录中,创建一个名为"Dockerfile"的文件。这个文件是用来定义你的 Docker 镜像的,可以看作是一个自动化的脚本。以下是一个简单的 Dockerfile 示例,其中使用了官方的 Nginx 镜像来部署静态页面:# 使用官方的 Nginx 镜像 FROM nginx:latest # 删除 Nginx 默认的静态资源 RUN rm -rf /usr/share/nginx/html/* # 将你的静态资源复制到 Nginx 的静态资源目录下 COPY ./dist /usr/share/nginx/html # 暴露 80 端口 EXPOSE 80 # 启动 Nginx CMD ["nginx", "-g", "daemon off;"]步骤2:构建 Docker 镜像在项目根目录下,你可以使用 **docker build** 命令来根据 Dockerfile 构建 Docker 镜像:docker build -t my-frontend-app .其中,**-t my-frontend-app** 参数用于给你的 Docker 镜像命名,**.** 指定了 Dockerfile 所在的位置(在这里,它在当前目录下)。步骤3:运行 Docker 容器你现在可以使用 **docker run** 命令来运行你刚刚构建的 Docker 镜像:docker run -p 80:80 -d my-frontend-app**p 80:80** 参数指定了将容器的 80 端口映射到宿主机的 80 端口,**d** 参数指定了以后台模式运行容器。现在你应该可以在你的浏览器中通过访问 **http://localhost** 来查看你的前端页面了。如果你的前端应用更复杂,或者需要与后端服务进行交互,你可能需要进行更复杂的配置,比如使用 Docker Compose 来管理多个服务,或者使用环境变量来配置你的应用。负载均衡如果你的前端应用使用 Docker 部署,有多种方式可以实现负载均衡。以下是一些常见的方法:1. 使用 Docker Swarm:Docker Swarm 是 Docker 的原生集群管理和编排工具。在 Swarm 集群中,你可以创建一个服务,然后指定服务的副本数量。Swarm 会自动在集群的节点间分配这些副本,实现负载均衡。以下是一个简单的 Docker Swarm 服务创建命令:docker service create --name my-frontend-app --publish 80:80 --replicas 3 my-frontend-app在这个命令中,**--name my-frontend-app** 指定了服务的名称,**--publish 80:80** 指定了将容器的 80 端口映射到宿主机的 80 端口,**--replicas 3** 指定了创建 3 个副本,**my-frontend-app** 是你的 Docker 镜像的名称。2. 使用 Kubernetes:Kubernetes 是一个更强大的容器编排平台,它也支持负载均衡。在 Kubernetes 中,你可以创建一个 Deployment 和一个 Service,Kubernetes 会自动为你的应用提供负载均衡。以下是一个简单的 Kubernetes Deployment 和 Service 的定义:apiVersion: apps/v1 kind: Deployment metadata: name: my-frontend-app spec: replicas: 3 selector: matchLabels: app: my-frontend-app template: metadata: labels: app: my-frontend-app spec: containers: - name: my-frontend-app image: my-frontend-app ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: my-frontend-app spec: type: LoadBalancer ports: - port: 80 selector: app: my-frontend-app在这个定义中,Deployment 创建了 3 个前端应用的副本,Service 为这些副本提供了一个负载均衡器。3. 使用云服务提供商的负载均衡器:如果你的应用部署在云环境(如 AWS, Google Cloud, Azure 等),你可以使用云服务提供商的负载均衡服务。这些负载均衡服务通常提供了更强大的功能,比如自动扩缩容,健康检查,SSL 终结等。以上都是实现 Docker 负载均衡的一些方式,你可以根据你的具体需求和环境选择最合适的方式。PM2PM2 主要用于管理和维护 Node.js 应用,但是你也可以使用 PM2 来运行一个静态服务器,用来部署你的前端页面。这可以通过使用像 **http-server** 这样的简单的静态文件服务器来完成。以下是使用 PM2 部署前端页面的步骤:安装 http-server首先,你需要在你的项目中安装 **http-server**。你可以使用 **npm** 来安装它:npm install http-server --save创建 PM2 配置文件接下来,你需要创建一个 PM2 的配置文件,例如 **ecosystem.config.js**。在这个文件中,你需要指定 **http-server** 的路径和你的前端页面的路径:javascriptCopy code module.exports = { apps: [ { name: 'frontend', script: 'node_modules/http-server/bin/http-server', args: './dist -p 8080', // 这里的 ./dist 是你的前端页面的路径,-p 8080 是你要监听的端口 instances: 'max', exec_mode: 'cluster', watch: true, // 如果你希望在文件改变时自动重启服务器,可以设置 watch 为 true env: { NODE_ENV: 'production', }, }, ], };使用 PM2 启动你的前端页面现在,你可以使用 PM2 来启动你的前端页面了:pm2 start ecosystem.config.js通过以上步骤,你就可以使用 PM2 和 **http-server** 来部署你的前端页面了。这种方式的好处是你可以利用 PM2 提供的特性,例如应用的自动重启和负载均衡。但需要注意的是,**http-server** 是一个非常简单的静态文件服务器,如果你需要更复杂的功能(例如 SSL、反向代理等),你可能需要考虑使用更强大的服务器软件,例如 Nginx 或 Express.js。部署方式比较技术优点缺点出现时间适合场景不适合场景Nginx轻量级,高性能,可作为反向代理和负载均衡器需要手动配置和管理2004年任何需要静态页面服务的项目需要动态服务器端渲染的项目PM2 Serve可以使用PM2来管理静态服务进程不包含反向代理或负载均衡器PM2:2014年需要简单的静态文件服务需要复杂的HTTP请求处理或负载均衡的项目Docker容器化,跨平台需要手动管理容器和镜像,比其他选项复杂2013年任何需要跨平台部署或以统一方式部署多种服务的项目小规模或简单的项目,因为Docker可能引入不必要的复杂性GitHub Pages免费,支持自定义域名,集成GitHub功能有限,仅支持静态内容2008年简单的个人、项目或组织页面复杂的、需要后端的应用Netlify/Vercel提供自动部署,函数即服务等免费版有一些限制Netlify:2014年, Vercel:2015年静态网站和Jamstack应用大规模、复杂的后端应用云存储服务 (AWS S3, Google Cloud Storage)简单,可扩展,集成CDN需要配置权限和CDNAWS S3:2006年, Google Cloud Storage:2010年静态网站,或需要大规模存储的应用需要后端逻辑的应用同样,你应该根据你的具体需求来选择最适合的部署方法。例如,如果你的网站很简单,GitHub Pages 可能就足够了。如果你需要一些后端逻辑,但不想管理服务器,那么 Netlify 或 Vercel 可能是一个好选择。如果你需要完全的控制和可扩展性,Docker 或云存储服务可能更合适。Node 应用简介部署 Node.js 应用也有多种方法,选择哪一种取决于你的项目需求和技术背景。以下是一些常见的部署方式:手动部署: 这是最基本的方式,你需要在你的服务器上安装Node.js,然后通过FTP或者SCP将你的代码上传到服务器,然后运行你的应用。使用版本控制系统(如Git): 你可以在服务器上设置一个Git仓库,并通过**git push**命令来部署你的应用。你还需要在服务器上设置一个脚本来自动运行你的应用。使用PM2: PM2是一个带有负载均衡功能的Node应用的进程管理器,可以让你的应用后台运行,如果应用崩溃了,PM2会自动重启应用。使用Docker: Docker让你可以在一个隔离的容器中运行你的应用,这可以避免很多系统依赖问题。你可以将你的Node.js应用“Docker化”,并在任何支持Docker的平台上运行。使用云服务: 许多云服务提供了Node.js的支持,比如AWS Elastic Beanstalk,Google App Engine,Heroku,Azure App Service等。这些服务通常会处理大部分部署细节,让你可以专注于编写代码。使用PaaS平台: 例如Heroku,它为部署Node.js应用提供了非常方便的平台。你只需要将你的代码推送到Heroku的Git仓库,然后Heroku就会自动为你的应用分配资源,并启动你的应用。使用Serverless架构: 如AWS Lambda,Azure Functions,Google Cloud Functions等,你只需要编写处理请求的函数,然后上传到服务提供商的平台,服务提供商会为你处理扩容、负载均衡等问题。选择适合你的方式,主要取决于你的应用规模,预期的访问量,以及你希望多大程度上控制你的服务器和部署过程。PM2PM2 是一个非常流行的 Node.js 应用程序的生产过程管理器,可以让你保持应用的持续运行,可以让你在应用崩溃时自动重启,也可以使你的应用运行在多个 CPU 核心上,从而提高性能。以下是使用 PM2 部署 Node.js 应用的步骤:安装 PM2首先,你需要在你的服务器上安装 PM2。你可以使用 npm(Node.js 的包管理器)来安装 PM2:npm install -g pm2这个命令会全局安装 PM2,所以你可以在任何地方运行 pm2 命令。启动你的应用有了 PM2,你就可以使用它来启动你的 Node.js 应用了。假设你的入口文件是 **app.js**,你可以运行以下命令来启动你的应用:pm2 start app.js你的应用现在就在 PM2 的管理下运行了。如果你的应用崩溃,PM2 会自动重启它。你也可以使用 PM2 的其他命令来查看应用的状态,查看日志,停止或重启应用等。配置应用对于更复杂的应用,你可能需要进行更多的配置。例如,你可能希望你的应用在服务器启动时自动启动,或者你可能希望在多个 CPU 核心上运行你的应用。PM2 允许你创建一个配置文件(通常是一个名为 **ecosystem.config.js** 的文件),在这个文件中,你可以定义你的应用的配置。以下是一个简单的配置文件示例:javascriptCopy code module.exports = { apps: [{ name: "my-app", script: "app.js", instances: "max", exec_mode: "cluster" }] }在这个配置中,**name** 属性定义了应用的名称,**script** 属性定义了应用的入口文件,**instances** 属性定义了应用的实例数量(在这个例子中,"max" 表示在所有可用的 CPU 核心上运行应用),**exec_mode** 属性定义了应用的执行模式(**cluster** 表示启用集群模式)。然后,你可以使用 **pm2 start ecosystem.config.js** 命令来按照这个配置启动你的应用。开启日志PM2 还提供了一些方便的工具来帮助你监视你的应用。例如,你可以使用 **pm2 logs** 命令来查看你的应用的日志,使用 **pm2 monit** 命令来查看每个应用的 CPU 和内存使用情况。以上就是使用 PM2 部署 Node.js 应用的基本步骤。需要注意的是,虽然 PM2 可以帮助你管理你的应用,但它并不能解决所有问题。例如,你可能还需要配置你的服务器防火墙,配置你的域名解析,安装和配置 SSL 证书等。高级应用PM2 是一个强大的 Node.js 应用进程管理器,除了基本的启动、监控和重启应用,它还提供了许多高级的特性和功能。以下是一些可以使用的高级功能:热重载(Hot Reload): 热重载可以在不停机的情况下重启应用。这对于需要长时间运行的应用来说非常有用,因为它可以在不影响用户的情况下进行更新。你可以使用 **pm2 reload <app_name>** 来进行热重载。应用监控(Monitoring): 使用 **pm2 monit** 命令,你可以看到所有由 PM2 管理的应用的 CPU 和内存使用情况,还可以看到每个应用的日志和其它信息。这个功能可以帮助你实时监控应用的性能并快速定位问题。日志管理(Log Management): PM2 会自动捕获你的应用的标准输出(stdout)和标准错误(stderr),并将它们保存到日志文件中。你可以使用 **pm2 logs** 命令来查看这些日志。集群模式(Cluster Mode): 在集群模式下,PM2 会启动多个应用实例,并自动负载均衡到所有可用的 CPU 核心。这可以极大地提高多核服务器的性能。启动文件(Startup Script): PM2 可以生成一个启动脚本,这样你的应用就可以在服务器启动时自动启动。你可以使用 **pm2 startup** 命令来生成这个脚本。自定义日志、PID 和应用列表路径: PM2 允许你自定义日志文件、PID 文件和应用列表文件的路径,这可以帮助你更好地组织你的文件。源代码变更自动重启(Watch & Restart): PM2 可以监听你的文件变化,并在文件变化时自动重启应用。你可以在启动应用时添加 **-watch** 参数来启用这个功能,或者在配置文件中设置 **watch** 属性。部署系统(Deployment System): PM2 提供了一个简单的部署系统,可以让你更容易地更新你的应用并追踪版本。你需要在配置文件中设置 **deploy** 属性来使用这个功能。这些高级功能可以让你更好地管理你的 Node.js 应用,并帮助你提高应用的性能和可靠性。如果你想了解更多关于 PM2 的信息,你可以查看 PM2 的官方文档。exec\_mode 有哪些模式PM2 提供两种执行模式,即 "fork" 和 "cluster"。这两种模式的主要区别在于它们处理 Node.js 应用的方式,以及它们如何利用多核 CPU。Fork Mode(分支模式): Fork mode 是 PM2 的默认执行模式。在这种模式下,每个 Node.js 应用都运行在自己的单独进程中。这意味着每个应用都有自己独立的内存空间,并且不能直接与其他应用共享状态。这种模式适合运行多个不同的 Node.js 应用。Cluster Mode(集群模式): 在集群模式下,PM2 会启动多个应用的实例,并自动进行负载均衡,让所有可用的 CPU 核心都被利用起来。这可以极大地提高多核服务器的性能。集群模式利用了 Node.js 的内建集群模块,因此你的 Node.js 应用不需要做任何修改就可以在集群模式下运行。如果你想在启动应用时指定执行模式,你可以在 **pm2 start** 命令后添加 **--exec-mode** 参数。例如,以下命令会在集群模式下启动 app.js:pm2 start app.js --exec-mode cluster如果你想在配置文件中指定执行模式,你可以设置 **exec_mode** 属性。例如,以下配置会在集群模式下启动 app.js:module.exports = { apps : [{ name: "app", script: "app.js", exec_mode: "cluster" }] }需要注意的是,虽然集群模式可以提高性能,但它也有一些限制。例如,因为每个应用实例都运行在自己的进程中,它们不能直接共享状态。如果你的应用需要维护共享状态,你可能需要使用外部服务(如 Redis)或者使用 IPC 通信。负载均衡使用 PM2 部署 Node.js 应用时,你可以利用其内建的集群模式(cluster mode)来实现负载均衡。在这种模式下,PM2 会创建多个应用实例,并自动将进入的请求分发到各个实例,从而实现负载均衡。以下是使用 PM2 实现负载均衡的步骤:确定应用实例的数量你可以选择让 PM2 自动根据 CPU 的核心数量来创建应用实例。你只需要将 instances 属性设置为 "max",PM2 就会创建与 CPU 核心数量相等的应用实例:module.exports = { apps : [{ name: "app", script: "app.js", instances: "max", exec_mode: "cluster" }] }你也可以手动指定实例的数量。只需要将 instances 属性设置为你想要的数字即可:module.exports = { apps : [{ name: "app", script: "app.js", instances: 4, // 创建4个实例 exec_mode: "cluster" }] }设置执行模式要启用集群模式,你需要将 exec\_mode 属性设置为 "cluster"。启动应用在你的配置文件设置好之后,你可以使用 pm2 start 命令启动你的应用:pm2 start ecosystem.config.js现在,你的 Node.js 应用已经在 PM2 的集群模式下运行了,PM2 会自动实现负载均衡。如果有任何应用实例崩溃,PM2 也会自动重启它。注意,虽然 PM2 的集群模式可以提高多核服务器的性能,但它并不是一个全功能的负载均衡解决方案。例如,它不支持会话粘性(session stickiness),这意味着如果你的应用需要维护用户会话,用户的每个请求可能会被路由到不同的应用实例。在这种情况下,你可能需要使用其他的负载均衡解决方案,例如 Nginx 或 HAProxy。PM2 + Nginx以下是使用 PM2 和 Nginx 部署 Node.js 应用并实现负载均衡的步骤:安装和配置PM2首先,你需要在服务器上安装 Node.js 和 PM2。你可以使用 NPM(Node Package Manager)来安装 PM2:npm install -g pm2然后,你可以使用 PM2 来启动你的 Node.js 应用。假设你的入口文件叫做 **app.js**,你可以使用以下命令来启动你的应用:pm2 start app.js -i max上述命令中的 **-i max** 参数将会告诉 PM2 启动尽可能多的应用实例来利用所有的CPU核心,这将帮助你实现负载均衡。安装和配置Nginx然后,你需要在服务器上安装 Nginx。在 Ubuntu 或 Debian 上,你可以使用以下命令来安装 Nginx:sudo apt-get update sudo apt-get install nginx接下来,你需要配置 Nginx 作为你的 Node.js 应用的反向代理。你需要编辑 Nginx 的配置文件(通常位于 **/etc/nginx/sites-available/default**)并添加以下内容:upstream myapp { server 127.0.0.1:3000; keepalive 64; } server { listen 80; location / { proxy_pass <http://myapp>; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }在上述配置中,**upstream模块定义了一个服务器组,Nginx将会在该服务器组中进行负载均衡。proxy_pass 指令告诉 Nginx 将所有的请求转发到 myapp** 服务器组。注意:你需要将 **server 127.0.0.1:3000 中的3000**替换为你的 Node.js 应用实际监听的端口。重启Nginx保存配置文件后,你需要重启Nginx以使新的配置生效:sudo systemctl restart nginx现在,你的 Node.js 应用应该可以通过 http://your-server-ip 访问了,同时,你已经成功地实现了负载均衡。记住,你需要为每一个 Node.js 应用的实例配置一个独立的**server条目。你可以将这些server条目添加到upstream模块中以实现负载均衡。如果你的应用在多台服务器上运行,你可以将每个服务器的地址添加到upstream**模块中。Docker为了使用 Docker 来部署一个 Node.js 应用,你需要创建一个 Dockerfile,这是一个用来构建 Docker 镜像的文本文件。然后你可以运行这个 Docker 镜像以启动你的应用。以下是一个基本的 Dockerfile 的示例,它描述了如何创建一个包含 Node.js 应用的 Docker 镜像:# 使用官方 Node.js 作为基础镜像 FROM node:14 # 设置工作目录 WORKDIR /usr/src/app # 复制 package.json 和 package-lock.json COPY package*.json ./ # 安装你的应用的依赖 RUN npm install # 复制你的应用的源码 COPY . . # 暴露你的应用监听的端口 EXPOSE 8080 # 启动你的应用 CMD [ "node", "app.js" ]这个 Dockerfile 假设你的应用在 "app.js" 中定义。你可能需要根据你的应用修改这个文件名。一旦你的 Dockerfile 创建好了,你可以使用以下命令来在 Dockerfile 所在的目录中构建你的 Docker 镜像:docker build -t my-node-app .然后你可以使用以下命令来运行你的 Docker 镜像:docker run -p 8080:8080 -d my-node-app这个命令会启动一个新的 Docker 容器,并将容器的 8080 端口映射到宿主机的 8080 端口。**-d** 选项会让 Docker 在后台运行这个容器。这是使用 Docker 部署一个 Node.js 应用的基本步骤。根据你的应用和环境,你可能需要进行更复杂的 Docker 配置。Docker + Docker Swarm果你希望在 Docker 环境中部署 Node.js 应用并实现负载均衡,但是不想使用 Nginx,你可以考虑使用 Docker 的内置工具如 Docker Swarm 或者第三方工具如 Traefik 和 HAProxy。以下是一个使用 Docker Swarm 实现负载均衡的例子:创建 Dockerfile你需要创建一个 Dockerfile 来定义你的 Node.js 应用的镜像。以下是一个简单的 Dockerfile 例子:FROM node:14 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 8080 CMD [ "node", "server.js" ]构建 Docker 镜像在你的 Dockerfile 所在的目录中运行以下命令来构建你的 Docker 镜像:bashCopy code docker build -t my-node-app .初始化 Docker Swarm在你的服务器上运行以下命令来初始化 Docker Swarm:docker swarm init部署你的 Node.js 应用你可以使用 Docker Service 来部署你的 Node.js 应用。以下命令将会启动三个你的 Node.js 应用的实例,并在端口8080上公开服务:docker service create --name my-node-service --publish published=8080,target=8080 --replicas=3 my-node-appDocker Swarm 将会自动在这三个实例之间实现负载均衡。以上步骤提供了使用 Docker Swarm 进行负载均衡的基础步骤。如果你希望进行更复杂的负载均衡配置,你可能需要查阅更多的 Docker Swarm 文档或者考虑使用更专业的负载均衡工具如 Traefik 和 HAProxy。Docker + k8s使用 Docker 部署 Node.js 应用,并使用 Kubernetes(k8s)实现负载均衡,你需要创建 Dockerfile、构建和推送 Docker 镜像、然后在 Kubernetes 上创建 Deployment 和 Service。以下是具体的步骤:创建 Dockerfile首先,创建一个 Dockerfile 来定义你的 Node.js 应用的 Docker 镜像:FROM node:14 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 8080 CMD [ "node", "server.js" ]构建 Docker 镜像在你的 Dockerfile 所在的目录中运行以下命令来构建你的 Docker 镜像:docker build -t my-node-app .推送 Docker 镜像到镜像仓库然后,你需要将你的 Docker 镜像推送到一个可以被你的 Kubernetes 集群访问的镜像仓库中,例如 Docker Hub。首先,登录你的 Docker Hub 帐户:docker login然后,标记并推送你的镜像:docker tag my-node-app:latest yourusername/my-node-app:latest docker push yourusername/my-node-app:latest记住,你需要将 **yourusername** 替换为你的 Docker Hub 用户名。创建 Kubernetes Deployment然后,你需要在 Kubernetes 上创建一个 Deployment 以运行你的 Node.js 应用。创建一个名为**my-node-app-deployment.yaml**的文件,然后添加以下内容:yamlCopy code apiVersion: apps/v1 kind: Deployment metadata: name: my-node-app spec: replicas: 3 selector: matchLabels: app: my-node-app template: metadata: labels: app: my-node-app spec: containers: - name: my-node-app image: yourusername/my-node-app:latest ports: - containerPort: 8080在这个文件中,**replicas: 3**意味着 Kubernetes 将运行三个你的应用的副本。然后,运行以下命令来创建 Deployment:kubectl apply -f my-node-app-deployment.yaml创建 Kubernetes Service最后,你需要创建一个 Kubernetes Service 来公开你的应用。创建一个名为**my-node-app-service.yaml**的文件,然后添加以下内容:apiVersion: v1 kind: Service metadata: name: my-node-app spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: my-node-app在这个文件中,**type: LoadBalancer**意味着 Kubernetes 将创建一个云提供商的负载均衡器,并将公网流量导向你的应用。然后,运行以下命令来创建 Service:kubectl apply -f my-node-app-service.yaml现在,你的 Node.js 应用应该已经在 Kubernetes 上运行,并且已经实现了负载均衡。你可以运行以下命令来检查你的 Service 的状态:kubectl get svc my-node-app在输出中,你应该可以看到你的 Service 的外部IP地址,你可以通过这个IP地址访问你的应用。Docker 还有必要使用 pm2 吗PM2 是一个流行的进程管理器,它可以让你保持你的应用始终在线,自动重启在异常情况下崩溃的应用,并且可以方便地管理你的应用的日志。然而,当你的应用运行在 Docker 容器中时,你可能并不总是需要 PM2。在 Docker 的哲学中,通常每个容器只运行一个进程,当这个进程结束时,容器就会停止。因此,如果你的应用崩溃,Docker 可以自动重启容器,这就提供了 PM2 的部分功能。此外,Docker 也提供了日志管理的功能,你可以使用**docker logs**命令来查看你的应用的输出。然而,PM2 还提供了其他一些功能,例如集群模式,它可以启动多个你的应用的实例来充分利用多核CPU。如果你的应用需要这种功能,并且你不打算使用其他的负载均衡解决方案,那么在 Docker 容器中使用 PM2 可能是有价值的。总的来说,是否在 Docker 中使用 PM2 取决于你的具体需求。如果 Docker 的内建功能已经足够满足你的需求,那么你可能不需要 PM2。但是,如果你需要 PM2 的某些特定功能,那么你可能会希望在你的 Docker 容器中使用 PM2。Docker+Nginx 为什么 不适合场景 负载均衡的项目首先,我要澄清一点,Docker+Nginx 是可以实现负载均衡的。当你在 Docker 中启动多个应用实例,然后使用 Nginx 作为反向代理来分发流量时,就实现了负载均衡。我的表述可能有些误导,对此我感到非常抱歉。然而,使用 Docker+Nginx 实现负载均衡有一个局限性,那就是配置的复杂性。**在一个动态环境中,你可能会经常启动和停止 Docker 容器,这就需要你不断地更新 Nginx 的配置以反映这些变化。**这个过程可以手动完成,但在一个大型系统中,这可能会变得非常繁琐和容易出错。此外,Nginx 并不直接支持一些更高级的负载均衡策略,例如基于请求的路由或基于会话的持久性。这些功能通常需要使用更专业的负载均衡器或服务网格来实现。所以,当我说 Docker+Nginx 可能不适合需要复杂负载均衡的项目时,我是指对于那些需要更高级负载均衡功能或者需要在动态环境中自动处理容器变化的项目,可能需要考虑使用如 Kubernetes 或 Docker Swarm 这样的工具,因为它们提供了更强大和灵活的负载均衡能力,并能更好地处理容器的动态性。部署方式比较技术优点缺点出现时间适合场景不适合场景PM2进程管理,自动重启,负载均衡不处理反向代理或容器化2014年单体应用,小规模项目大规模或需要高度可配置的项目PM2+Nginx进程管理,自动重启,负载均衡,反向代理,静态文件服务不处理容器化PM2:2014年,Nginx:2004年单体应用,需要处理HTTP请求的项目需要容器化的项目Docker容器化,跨平台不直接提供进程管理,反向代理,或负载均衡2013年任何大小的项目,需要跨平台的项目无特殊需求的小型项目,因为 Docker 可能引入不必要的复杂性Docker+Nginx容器化,反向代理,静态文件服务,可以配置为负载均衡需要手动维护Nginx配置以反映容器变化,可能不能提供更高级的负载均衡功能Docker:2013年,Nginx:2004年需要处理HTTP请求和基本负载均衡的项目,需要跨平台的项目需要自动处理容器变化或需要高级负载均衡的项目Docker Swarm容器化,服务发现,负载均衡,集群管理功能可能不如 Kubernetes 丰富2016年中等规模的项目,需要集群管理的项目大规模或需要高度可配置的项目Docker+K8s容器化,服务发现,负载均衡,自动扩缩容,滚动更新,自愈,集群管理相对复杂,学习曲线陡峭Docker:2013年,K8s:2015年大规模或复杂的微服务架构的项目小规模项目,因为 Kubernetes 可能引入不必要的复杂性选择哪种部署方式主要取决于你的应用的特性和需求,以及你和你的团队的技能和资源。对于小规模的单体应用,PM2 或者 PM2+Nginx 可能就足够了。如果你的应用需要在多台服务器或云环境中部署,那么你可能需要考虑使用 Docker。如果你的应用是一个大规模或复杂的微服务架构的项目,那么你可能需要考虑使用 Kubernetes。【END】
2023年08月01日
13 阅读
0 评论
0 点赞
2023-03-31
Nginx 禁止直接访问目录或文件
前言Nginx 需要设置禁止直接访问目录或文件,如果不禁止,Nginx 会直接去下载 web 目录下文件,如果有配置文件,则可以直接暴露一些配置文件源代码。禁止方法禁止访问某些后缀文件禁止所有 ini、conf、txt 后缀的文件location ~ \.(ini|conf|txt)$ { deny all; }禁止指定某个目录后缀 php 后缀的文件location /wp-content/uploads { location ~ .*\.(php)?$ { deny all; } }禁止指定多个目录后缀为 php 的文件location ~* ^/(css|uploads)/.*\.(php)${ deny all; }禁止访问目录或目录下文件禁止访问目录location ^~ /test/ { deny all; }禁止访问目录下文件location ^~ /test { deny all; }Nginx location 匹配相关= 表示精确匹配^~ 表示uri以某个字符串开头~ 正则匹配(区分大小写)~* 正则匹配(不区分大小写) !~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则/ 任何请求都会匹配匹配优先级:= > ^~ > /Nginx 配置图片直接下载不打开location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { add_header Content-Disposition attachment; }
2023年03月31日
6 阅读
0 评论
0 点赞
2022-06-28
Nginx 配置文件在线生成工具
Nginx ConfigNginx Config 是知名服务器提供商 Digital Ocean 发布的开源免费 “图形化 Nginx 配置文件生成工具”,大幅降低了 Nginx 的配置难度和建站的效率。NginxConfig 默认提供了常用预设的 PHP、单页面应用、WordPress 等方案,也能很方便地根据需要配置 HTTPS (SSL 证书)、反向代理等功能。官网地址:https://www.digitalocean.com/community/tools/nginx?global.app.lang=zhCNGitHub 地址:https://github.com/digitalocean/nginxconfig.ionginxWebUI官网地址: http://www.nginxwebui.cnGitHub 地址:https://github.com/cym1102/nginxWebUI功能说明nginxWebUI 是一款图形化管理 nginx 配置的工具, 可以使用网页来快速配置 nginx 的各项功能, 包括 http 协议转发, tcp 协议转发, 反向代理, 负载均衡, 静态 html 服务器, ssl 证书自动申请、续签、配置等, 配置好后可一建生成 nginx.conf 文件, 同时可控制 nginx 使用此文件进行启动与重载, 完成对 nginx 的图形化控制闭环。nginxWebUI 也可管理多个 nginx 服务器集群, 随时一键切换到对应服务器上进行 nginx 配置, 也可以一键将某台服务器配置同步到其他服务器, 方便集群管理。视频教程: https://www.bilibili.com/video/BV18A4y1D7GZ 演示地址: http://test.nginxwebui.cn:7070 用户名: admin 密码: adminjar安装说明以Ubuntu操作系统为例,注意:本项目需要在root用户下运行系统命令,极容易被黑客利用,请一定修改密码为复杂密码安装 java 运行环境和 nginxUbuntu:apt update apt install openjdk-11-jdk apt install nginxCentos:yum install java-11-openjdk yum install nginxWindows:下载 JDK 安装包:https://www.oracle.com/java/technologies/downloads/ 下载 nginx:http://nginx.org/en/download.html 配置 JAVA 运行环境 JAVA_HOME:JDK安装目录 Path:JDK安装目录 \bin 重启电脑下载最新版发行包 jarLinux: wget -O /home/nginxWebUI/nginxWebUI.jar http://file.nginxwebui.cn/nginxWebUI-3.3.1.jar Windows: 直接使用浏览器下载 http://file.nginxwebui.cn/nginxWebUI-3.3.1.jar有新版本只需要修改路径中的版本即可启动程序Linux: nohup java -jar -Dfile.encoding=UTF-8 /home/nginxWebUI/nginxWebUI.jar --server.port=8080 --project.home=/home/nginxWebUI/ > /dev/null & Windows: java -jar -Dfile.encoding=UTF-8 D:/home/nginxWebUI/nginxWebUI.jar --server.port=8080 --project.home=D:/home/nginxWebUI/参数说明(都是非必填)server.port 占用端口, 默认以 8080 端口启动project.home 项目配置文件目录,存放数据库文件,证书文件,日志等, 默认为 /home/nginxWebUI/spring.database.type=mysql 使用其他数据库,不填为使用本地 h2 数据库,可选 mysqlspring.datasource.url=jdbc:mysql://ip:port/nginxwebui 数据库 urlspring.datasource.username=root 数据库用户spring.datasource.password=pass 数据库密码注意 Linux 命令最后加一个 & 号, 表示项目后台运行docker安装说明本项目制作了 docker 镜像, 支持 x86\_64/arm64/arm v7 平台,同时包含 nginx 和 nginxWebUI 在内, 一体化管理与运行nginx。安装docker容器环境Ubuntu:apt install docker.ioCentos:yum install docker拉取镜像docker pull cym1102/nginxwebui:latest启动容器docker run -itd \ -v /home/nginxWebUI:/home/nginxWebUI \ -e BOOT_OPTIONS="--server.port=8080" \ --privileged=true \ --net=host \ cym1102/nginxwebui:latest注意:启动容器时请使用 --net=host 参数, 直接映射本机端口, 因为内部 nginx 可能使用任意一个端口, 所以必须映射本机所有端口。容器需要映射路径 /home/nginxWebUI:/home/nginxWebUI, 此路径下存放项目所有数据文件, 包括数据库, nginx 配置文件, 日志, 证书等, 升级镜像时, 此目录可保证项目数据不丢失. 请注意备份。-e BOOT_OPTIONS 参数可填充 java 启动参数, 可以靠此项参数修改端口号。--server.port 占用端口, 不填默认以 8080 端口启动日志默认存放在 /home/nginxWebUI/log/nginxWebUI.log另:使用 docker-compose 时配置文件如下:version: "3.2" services: nginxWebUi-server: image: cym1102/nginxwebui:latest volumes: - type: bind source: "/home/nginxWebUI" target: "/home/nginxWebUI" environment: BOOT_OPTIONS: "--server.port=8080" privileged: true network_mode: "host"编译说明使用maven编译打包mvn clean package使用 docker 构建镜像docker build -t nginxwebui:latest .添加开机启动编辑 service 配置vim /etc/systemd/system/nginxwebui.service[Unit] Description=NginxWebUI After=syslog.target After=network.target [Service] Type=simple User=root Group=root WorkingDirectory=/home/nginxWebUI ExecStart=/usr/bin/java -jar /home/nginxWebUI/nginxWebUI.jar Restart=always [Install] WantedBy=multi-user.target之后执行systemctl daemon-reload systemctl enable nginxwebui.service systemctl start nginxwebui.service使用说明打开 http://xxx.xxx.xxx.xxx:8080 进入主页登录页面, 第一次打开会要求初始化管理员账号进入系统后, 可在管理员管理里面添加修改管理员账号在http参数配置中可以配置nginx的http项目,进行http转发, 默认会给出几个常用配置, 其他需要的配置可自由增删改查. 可以勾选开启日志跟踪, 生成日志文件。在TCP参数配置中可以配置nginx的stream项目参数, 大多数情况下可不配.在反向代理中可配置nginx的反向代理即server项功能, 可开启ssl功能, 可以直接从网页上上传pem文件和key文件, 或者使用系统内申请的证书, 可以直接开启http转跳https功能,也可开启http2协议在负载均衡中可配置nginx的负载均衡即upstream项功能, 在反向代理管理中可选择代理目标为配置好的负载均衡在html静态文件上传中可直接上传html压缩包到指定路径,上传后可直接在反向代理中使用,省去在Linux中上传html文件的步骤在证书管理中可添加证书, 并进行签发和续签, 开启定时续签后, 系统会自动续签即将过期的证书, 注意:证书的签发是用的acme.sh的dns模式, 需要配合阿里云的aliKey和aliSecret来使用. 请先申请好aliKey和aliSecret备份文件管理, 这里可以看到nginx.cnf的备份历史版本, nginx出现错误时可以选择回滚到某一个历史版本最终生成conf文件,可在此进行进一步手动修改,确认修改无误后,可覆盖本机conf文件,并进行效验和重启, 可以选择生成单一nginx.conf文件还是按域名将各个配置文件分开放在conf.d下远程服务器管理, 如果有多台nginx服务器, 可以都部署上nginxWebUI, 然后登录其中一台, 在远程管理中添加其他服务器的ip和用户名密码, 就可以在一台机器上管理所有的nginx服务器了.提供一键同步功能, 可以将某一台服务器的数据配置和证书文件同步到其他服务器中接口开发本系统提供 http 接口调用, 打开 http://xxx.xxx.xxx.xxx:8080/doc.html 即可查看 smart-doc 接口页面.接口调用需要在 http 请求 header 中添加 token, 其中 token 的获取需要先在管理员管理中, 打开用户的接口调用权限, 然后通过用户名密码调用获取 token 接口, 才能得到 token找回密码如果忘记了登录密码或没有保存两步验证,可按如下教程找回密码和关闭两步验证1.停止 nginxWebUIpkill java2.使用找回密码参数运行 nginxWebUI.jarjava -jar nginxWebUI.jar --project.home=/home/nginxWebUI/ --project.findPass=trueproject.home 为项目文件所在目录project.findPass 为是否打印用户名密码运行成功后即可打印出全部用户名密码并关闭两步验证。
2022年06月28日
4 阅读
0 评论
0 点赞
2022-05-04
【WordPress】LNMP环境下,wordpress伪静态文件导致默认首页不生效
来源:http://www.2zzt.com/jianzhan/5199.html问题:LNMP搭配的Linux环境,文件夹下 index.html、index.htm、index.asp 等文件不能被自动调出,也就是应该输入 www.xxx.com/go/q 即可自动跳转到 www.xxx.com/go/q/index.html ,而LNMP环境下,wordpress 伪静态文件导致默认首页不生效。解决:Winscp 连接后,到 /user/local/nginx/conf/ 目录下找到 wordpress.conf 文件,将文件内容替换为:location / { if (!-e $request_filename) { rewrite ^.+/?(/wp-.*) $1 last; rewrite ^.+/?(/.*\.php)$ $1 last; rewrite ^(.+)$ /index.php?q=$1 last; } }修改后保存即可。保存后还没生效,需要 SSH 链接后给予重载命令才会生效。service nginx reload扩展阅读:WordPress 伪静态规则 Apache & NginxNginx 伪静态规则打开 nginx.conf 或者某个站点的配置环境,比如 5iehome.com.conf(不同人配置的不一样),在 server 大括号里面添加下面的代码:location / { try_files $uri $uri/ /index.php?$args; } # Add trailing slash to */wp-admin requests. rewrite /wp-admin$ $scheme://$host$uri/ permanent;保存,重启 Nginx 即可。 注:如果以上规则不适用,请自己查看WP官方文档:https://codex.wordpress.org/NginxApache 伪静态规则新建一个 htaccess.txt 文件,添加下面的代码:<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond % !-f RewriteCond % !-d RewriteRule . /index.php [L] </IfModule>然后上传到 WordPress 站点的根目录,重命名为 .htaccess 即可。【END】
2022年05月04日
3 阅读
0 评论
0 点赞
2021-06-19
PHP 涟漪云(蓝奏云挂载程序)安装详解
前言近期在吾爱破解论坛上看到蓝奏云挂载程序PHP版,详细安装过程如下。原帖链接:PHP 涟漪云(蓝奏云挂载程序)https://www.52pojie.cn/thread-1459597-1-1.html (出处: 吾爱破解论坛)安装步骤下载源码:https://gitee.com/lianyi007/lianyi-cloud将源码上传至服务器,请记住上传路径地址,后面设置伪静态需要。获取cookie。首先登录蓝奏云控制台,然后按下浏览器F12,进入调试模式。选择Console控制台,在 “>” 处粘贴以下代码,回车执行。如果没有问题,会提示“复制成功”。if(!/(^|\.)woozooo\.com$/i.test(document.location.host)) throw new Error('请登录到蓝奏云控制台在执行此代码!'); var copy = function (str) { var oInput = document.createElement('input'); oInput.value = str; document.body.appendChild(oInput); oInput.select(); document.execCommand("Copy"); oInput.remove(); alert('复制成功'); } var regex = /(?<=^|;)\s*([^=]+)=\s*(.+?)\s*(?=;|$)/g, cookies = ,re; while(re = regex.exec(document.cookie)) if(re[1] === 'ylogin'||re[1] === 'phpdisk_info') cookies[re[1]] = re[1]+'='+re[2]+';'; if(!cookies.hasOwnProperty('phpdisk_info')) throw new Error('获取cookie失败,请确认您已登录到蓝奏云控制台!'); copy(Object.values(cookies).join(' '));修改配置文件 config.php 相关数据,粘贴刚刚复制成功的内容,挑选用户ID和令牌,填写到单引号内。'ylogin' => '此处填写您的ylogin', // 蓝奏云用户id 'phpdisk_info' => '此处填写您的phpdisk_info' // 蓝奏云令牌网站PHP增加 Redis 扩展模块。如果无效,可注释掉 Classes 文件夹中的 Lanzou.php 文件中的初始化函数_construct里面的:$this->redis = ...// 若不使用Redis缓存可注释掉下面一行 //$this->redis = Redis::prefix(self::prefix);配置Nginx伪静态,目的是单击某个文件,实现浏览器直链下载。网站Nginx伪静态设置需要注意,如果程序安装目录不在网站根目录下,需要填写完整路径,比如程序安装在 /www/tool/lanzou/ 目录下。location /tool/lanzou/ { if (!-e $request_filename) { rewrite ^/tool/lanzou/(d)/([a-zA-Z0-9]+)(\.[\w]+)?$ /tool/lanzou/api.php?c=$1&id=$2 last; rewrite ^/tool/lanzou/([a-z0-9]+)(\.[\w]+|/([^/]+))?$ /tool/lanzou/api.php?id=$1&name=$3 last; } }还需注意,不要出现多个伪静态设置都是 location / ,即使里面的内容不一样,也要把这两个合并到一块。不然重启 Nginx 会报错nginx: [emerg] duplicate location “/“ in config.conf:51演示地址:http://lz.ly93.cc/【完】
2021年06月19日
5 阅读
0 评论
0 点赞