【开端】 进行页面升级或维护时不影响用户体验NGINX配置

一、绪论

在网站管理中,经常需要进行页面升级或维护,而为了不影响用户体验,我们可以设置一个访问页面,在页面升级期间,用户访问网站时会直接跳转到该页面。本文将介绍如何设置访问页面进行升级,以确保用户的顺畅访问和良好体验。

二、NGINX配置

首先,创建一个包含维护信息的 HTML 文件,比如 maintenance.html

html 复制代码
<!-- maintenance.html -->
<!DOCTYPE html>
<html>
<head>
    <title>维护通知</title>
</head>
<body>
    <h1>系统维护中</h1>
    <p>系统正在维护,敬请期待。</p>
</body>
</html>

接下来,配置 NGINX 使得所有请求都重定向到这个维护页面

/etc/nginx/nginx.conf 或相应的 NGINX 配置文件

server {

listen 80;

server_name yourdomain.com;

location / {

重定向所有请求到维护页面

return 503;

rewrite ^(.*)$ /maintenance.html break;

}

location = /maintenance.html {

维护页面的位置

root /path/to/your/html/files;

internal;

}

}

bash 复制代码
# /etc/nginx/nginx.conf 或相应的 NGINX 配置文件
 
server {
    listen 80;
    server_name yourdomain.com;
 
    location / {
        # 重定向所有请求到维护页面
        return 503;
        rewrite ^(.*)$ /maintenance.html break;
    }
 
    location = /maintenance.html {
        # 维护页面的位置
        root /path/to/your/html/files;
        internal;
    }
}

三、nginx的其他配置

nginx.conf

bash 复制代码
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
           # root   html;
           #index  index.html index.htm;x
           proxy_pass   http://127.0.0.1:9090;	#代理地址
           proxy_set_header  Host $host;
           proxy_set_header   X-real-ip $remote_addr;
           proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


 #  HTTPS server配置
	server {
        listen       443 ssl;
        server_name  localhost;
        ssl			 on;	#开启SSL
        client_max_body_size   0; #设置 不限制 文件上传大小,默认为1M 
        charset utf-8;

        ssl_certificate      /usr/local/ca/local.crt;	#证书绝对路径
        ssl_certificate_key  /usr/local/ca/local.key;	#密钥绝对路径

        ssl_session_cache    shared:SSL:10m;	#设置会话缓存大小
        ssl_session_timeout  10m;	# 连接超时时间

        # ssl_ciphers  HIGH:!aNULL:!MD5;	#支持的算法,默认为OpenSSL的全部算法
        ssl_prefer_server_ciphers  on; #优先使用服务端的SSL密钥证书,默认为off 

	location / {
           proxy_pass   http://127.0.0.1:8080;
           proxy_set_header  Host $host;
           proxy_set_header   X-real-ip $remote_addr;
           proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }

}    

}

限制IP的频繁访问

http {

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=20r/s;//同一个IP每秒20次请求

}

bash 复制代码
http
{
  limit_req_zone $binary_remote_addr zone=mylimit:10m rate=20r/s;//同一个IP每秒20次请求
}

配置只能通过域名访问

server {

listen 80 default_server; server_name _; # _ 表示无效域名 location / {

return 403;

}

}

bash 复制代码
server {
    listen 80 default_server;	
    server_name _;	# _ 表示无效域名

    location / {
        return 403;
    }
}
相关推荐
学嵌入式的小杨同学14 小时前
【嵌入式 GUI 实战】LVGL+MP3 播放器:从环境搭建到图形界面开发全指南
linux·c语言·开发语言·vscode·vim·音频·ux
光影少年1 天前
智能体UI ux pro max
前端·ui·ux
学嵌入式的小杨同学1 天前
【Linux 封神之路】进程进阶实战:fork/vfork/exec 函数族 + 作业实现(含僵尸进程解决方案)
linux·开发语言·vscode·嵌入式硬件·vim·软件工程·ux
上海云盾-小余1 天前
高防 CDN 核心价值:抵御 DDoS 攻击与提升用户体验双赢
ddos·ux
檐下翻书1731 天前
AI原生应用:重新定义软件与用户体验
ux·ai-native
木子啊1 天前
优雅接管异常:打造安全的用户体验
安全·ux
冬奇Lab6 天前
一天一个开源项目(第8篇):UI/UX Pro Max Skill - AI设计智能助手,让AI帮你构建专业UI/UX
ui·开源·ux
学嵌入式的小杨同学6 天前
【Linux 封神之路】文件操作 + 时间编程实战:从缓冲区到时间格式化全解析
linux·c语言·开发语言·前端·数据库·算法·ux
学嵌入式的小杨同学7 天前
【Linux 实战】Makefile 自动化构建进阶:静态库 / 动态库通用模板(一键编译 + 系统安装)
linux·开发语言·git·vscode·spring·vim·ux
会一点设计11 天前
金牌年度汇报PPT的逻辑框架与模板范例!2026全新整理
ui·powerpoint·ux·ppt