nginxconf.sh 自动生成 nginx tcp 转发配置文件 conf

本文涉及的产品
轻量应用服务器 4vCPU 16GiB,适用于搭建游戏自建服
轻量应用服务器 2vCPU 1GiB,适用于搭建电商独立站
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
简介: 该脚本由 eisc.cn 开发,用于自动生成 Nginx 代理配置。它根据预设的域名、IP 和端口信息,为多个项目(如 www、work、sou 等)创建对应的 Nginx 配置文件,设置前端转发、端口对端口及后端转发规则,并生成日志和 301 跳转配置。支持自动创建 CGI 解析目录,确保各项目能够正确访问。运行时需具备 root 权限或使用 sudo。
#!/bin/bash
# nginx 代理自动生成,开发:eisc.cn

configDIR(){
   

    if [ `id -un` != "root" ]
    then
        sudoc="sudo" 
    else
        sudoc=""
    fi

    wwwconf=/datadisk/eisc/wwwconf/
    $sudoc mkdir -p $wwwconf ; $sudoc rm -rf $wwwconf/*


    xiangmuName=(
        www   work   sou   enchantment  guzheng  zhoubao  gcc  xibin
    )

    peizhi="
ddoss.cn

10.1.1.2

62000
"


}

create_www_conf(){

  echo "案例:   eisc.cn 0.0.0.0 62000"
#  read -p " 请输入三个参数:" peizhi

    buff=( $peizhi )

    yuming=${buff[0]}
    # 前端域名,增加到nginx 消息头部
    ip=${buff[1]}
    # 后端服务器ip
    portmin=${buff[2]}
    portmin=$[portmin-1]
    # 设置最小端口,后面网站按照顺序自动加1

    declare -A port
      port["www"]="62010"
      port["work"]="62011"
      port["sou"]="62012"
      port["enchantment"]="62013"
      port["guzheng"]="62014"
      port["zhoubao"]="62015"
      port["gcc"]="62016"
      port["xibin"]="62100"

    cd $wwwconf; sudo chmod 777 -R $wwwconf $wwwconf/*

    if [ ! -e eiscwwwconf.tar.gz ]
    then
      $sudoc tar -czvf eiscwwwconf.tar.gz *
      $sudoc rm -rf `ls | grep -v eiscwwwconf.tar.gz`
    fi

    $sudoc rm -rf `ls | grep -v eiscwwwconf.tar.gz`

   # file=(`ls $www | grep -vE "ssl|wwwconf|wwwroot|*.sh"`)
   file=${xiangmuName[*]}

    for i in ${file[*]}
        do
            ((a++))
            b=$[portmin+a] ; portlist[$c]=$b ; ((c++))
            # 打印一次变量,接收一个元素存入数组: portlist
            if [ ! -e $www/$i/cgi-bin ]
            then
            sudo mkdir $www/$i/cgi-bin
            fi

            case $i in
              "www")          b=${port[www]}           ; echo "#------- www 被手动指定固定端口  $b -------#" ;;
              "work")         b=${port[work]}          ; echo "#------- work 被手动指定固定端口  $b -------#" ;;
              "sou")          b=${port[sou]}           ; echo "#------- sou 被手动指定固定端口  $b -------#";;
              "enchantment")  b=${port[enchantment]}   ; echo "#------- enchantment 被手动指定固定端口  $b -------#";;
              "guzheng")      b=${port[guzheng]}       ; echo "#------- guzheng 被手动指定固定端口  $b -------#";;
              "zhoubao")      b=${port[zhoubao]}       ; echo "#------- zhoubao 被手动指定固定端口  $b -------#";;
              "gcc")          b=${port[gcc]}           ; echo "#------- zhoubao 被手动指定固定端口  $b -------#";;
              "xibin")        b=${port[xibin]}         ; echo "#------- xibin 被手动指定固定端口  $b -------#";;
            esac

            echo "  $i 创建web网站 的端口:   $b 前端域名 +  $i.$yuming  + 后端ip port + $ip:$b  +  c++ cgi 解析目录: $i/cgi-bin"
            echo "  $i 创建web网站 的端口:   $b 前端域名 +  $i.$yuming  + 后端ip port + $ip:$b  +  c++ cgi 解析目录: $i/cgi-bin" >> log_www_conf.txt

#---------  生成前端转发 子站点文件  -----------#


            nginxwwwurl=$i.$yuming                      # replase in case 
            case $i in 
                "www")  nginxwwwurl="$i.$yuming $yuming";;
                "gcc")  nginxwwwurl="www.okgcc.cn okgcc.cn";;
            esac

            $sudoc mkdir -p $wwwconf/nginxzhuanfa ; $sudoc chmod 777 $wwwconf/nginxzhuanfa
            echo "
            server{
            listen 80;
            server_name $nginxwwwurl;
            location / {
                proxy_pass http://$ip:$b;
                #---- 记录 IP 地址 ----#
                proxy_redirect off;
                proxy_set_header Host \$http_host;
                proxy_set_header X-Real-IP \$remote_addr;     
                proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
              }
            }
            " > $wwwconf/nginxzhuanfa/$i-$b.conf

#---------- 端口对端口 ----------#

            $sudoc mkdir -p $wwwconf/portconf ; $sudoc chmod 777 $wwwconf/portconf
            echo "
            server{
            listen $b;
            location / {
                proxy_pass http://$ip:$b;
                #---- 记录 IP 地址 ----#
                proxy_redirect off;
                proxy_set_header Host \$http_host;
                proxy_set_header X-Real-IP \$remote_addr;     
                proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
              }
            }
            " > $wwwconf/portconf/$i-$b.conf

            if [ "$i" = "www" ]
            then
                echo "
                  server{
                  listen $b;
                  location / {
                      proxy_pass http://$ip:$b;

                    }
                  }
                " > $wwwconf/portconf/$i-$b.conf
            fi


            if [ "$i" = "gcc" ]
            then
                echo "
                  server{
                  listen $b;
                  location / {
                      proxy_pass http://$ip:$b;
                    }
                  }
                " > $wwwconf/portconf/$i-$b.conf
            fi



#---------- 后端转发子站点 ----------#

            echo "
            server {
              listen       $b;
              root   $www/$i;
              index index.php index.html index.htm index;

              add_header 'yuming is ' '$i.$yuming';
              add_header 'ipport is ' '$ip:$b';

              location ~ \.php {

      #                fastcgi_pass   unix:/var/run/php-fpm811.sock;
                      fastcgi_pass   127.0.0.1:9000;
                      fastcgi_index  index.php;
                      fastcgi_param  SCRIPT_FILENAME  \$document_root\$fastcgi_script_name;
                      include        fastcgi_params;
              }

              location /cgi-bin {
                  fastcgi_pass  unix:/var/run/fcgiwrap.socket;
                  include fastcgi.conf;
              }
            }
           " > $wwwconf/$b.$i.conf

#---------- 301 zhuantiao ----------#       
        $sudoc mkdir -p $wwwconf/301 ; $sudoc chmod 777 $wwwconf/301

        echo "
        server{
        listen 80;
        server_name $nginxwwwurl;
        location / {
            rewrite ^(.*)$ http://$i.$ip\$1 permanent;
            }
        }
        " > $wwwconf/301/$i.$yuming.conf

    done

        echo "[ok]创建网站日志存放在:   $wwwconf/log_www_conf.txt"
        echo "[ok]前端转发 nginx 子文件目录: $wwwconf/nginxzhuanfa"
        sudo nginx -s reload
}


main()
{
   configDIR
   create_www_conf
}

main

# downloadUrl:   wget http://ddoss.cn/file/ubuntu/shell/server/nginxconf.sh
AI 代码解读
目录
打赏
0
9
9
0
29
分享
相关文章
【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解
【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解
145 1
nginx的配置文件详解
本文详细解释了nginx配置文件中的关键指令和区块,如http、server、location、upstream、events等,并通过一个示例配置文件展示了如何设置HTTP服务器、gzip压缩、反向代理、URL重写、错误页面和负载均衡等,强调了配置的灵活性和实际应用。
151 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
250 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
深入解析Nginx配置文件
Nginx是一个高性能HTTP服务器和反向代理,其配置文件`nginx.conf`包含全局、事件、HTTP、Server和Location块。全局块设置如用户和工作进程数,事件块设定连接数,HTTP块涉及MIME类型、日志和包含其他配置。Server块定义虚拟主机,Location块处理URI匹配。Nginx常用于反向代理和负载均衡,如`proxy_pass`指令转发请求至后端服务器组。理解这些配置有助于服务器优化和测试。
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个通用的 TCP/UDP 代理服务器,以及一个邮件代理服务器和通用的 HTTP 缓存服务器。
275 0
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
运维系列.Nginx配置文件结构功能总结
运维系列.Nginx配置文件结构功能总结
118 0
运维系列.Nginx配置文件结构功能总结
Linux学习之Ubuntu 20中OpenResty的nginx目录里内容和配置文件
总的来说,OpenResty的Nginx配置文件是一个强大的工具,它允许你以非常灵活的方式定义你的Web服务的行为。
171 2
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些