java 6u45 no sni 2_RedHat7配置Nginx实现多域名虚拟主机的SSL/TLS认证(实现单IP以不同证书服务于不同域名)...

#!/bin/bash

### nginx_ensite--- Bash script to enable or disable a site innginx.

### Copyright (C)2010, 2015 António P. P. Almeida ### Author: António P. P. Almeida### Permission is hereby granted,freeof charge, to any person obtaining a

### copy of this software and associated documentation files (the"Software"),

### to dealinthe Software without restriction, including without limitation

### the rights to use, copy, modify, merge, publish, distribute, sublicense,

### and/or sell copies of the Software, and to permit persons to whom the

### Software is furnished todoso, subject to the following conditions:

### The above copyright notice and this permission notice shall be includedin### all copies or substantial portions of the Software.

### Except as containedinthis notice, the name(s) of the above copyright

### holders shall not be usedinadvertising or otherwise to promote the sale,

### use or other dealingsinthis Software without prior written authorization.

### THE SOFTWARE IS PROVIDED"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

### IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

### FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL

### THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

### LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

### FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER

### DEALINGS IN THE SOFTWARE.

SCRIPTNAME=${0##*/}

## The nginx binary. Checkif we're root or not. If we are get the

## path to nginx. If not hardcode the path.if [ $(id -u) -eq 0 ]; thenIS_ROOT=1NGINX=$(command -v nginx) || exit 1

elseSTATUS=0NGINX=/usr/sbin/nginxfi## Default valueforthe configuration directory.

NGINX_CONF_DIR=/usr/local/nginx/conffunctionprint_usage() {echo "$SCRIPTNAME [-c default: /usr/local/nginx/conf] [ -s default: nginx] "}

## Extract the startup program name from a given argument. If it's a

## path to nginx then add the '-s reload'to the name. Otherwise just

## return the given argument.

## $1: the program name.

## Returns the proper startup program name,functionget_startup_program_name() {

local value="$1"[[ $1 =~ [[:alnum:]/-]*nginx$ ]] && value="$1 -s reload"

echo "$value"}

## The default start up program is nginx.

STARTUP_PROGRAM_NAME=$(get_startup_program_name nginx)

## Create the relative path to the vhostfile.

## $1: configuration filename (usually the vhost)

## $2: available sites directory name (usually sites-available)

## Returns the relative path from the sites-enabled directory.functionmake_relative_path() {

printf'../%.0s%s/%s' $(eval echo {0..$(expr length "${1//[^\/]/}")}) $2 $1}

## Checking the type of action we will perform. Enabling or disabling.

ACTION=$(echo $SCRIPTNAME | awk '$0 ~ /dissite/ {print "DISABLE"} $0 ~ /ensite/ {print "ENABLE"} $0 !~ /(dis|en)site/ {print "UNKNOWN"}')if [ "$ACTION" == "UNKNOWN" ]; then

echo "$SCRIPTNAME: Unknown action!" >&2print_usage

exit2

fi## Check the number of arguments.if [ $# -lt 1 -o $# -gt 5 ]; thenprint_usage>&2exit3

fi## Parse the getops arguments.while getopts c:s: OPT; do

case $OPT inc|+c)

NGINX_CONF_DIR=$(realpath "$OPTARG")if [[ ! -d $NGINX_CONF_DIR ]]; then

echo "$NGINX_CONF_DIR directory not found." >&2exit3

fi;;

s|+s)

STARTUP_PROGRAM_NAME=$(get_startup_program_name "$OPTARG")

;;*)

print_usage>&2exit4;;esac

done

shift $(( OPTIND - 1))

OPTIND=1## The pathsforboth nginx configuration files and the sites

## configuration files and symbolic link destinations.

AVAILABLE_SITES_PATH="$NGINX_CONF_DIR/sites-available"ENABLED_SITES_PATH="$NGINX_CONF_DIR/sites-enabled"## Check the number of arguments.if [ $# -ne 1 ]; thenprint_usage>&2exit3

elseSITE_AVAILABLE=$(make_relative_path "$1" ${AVAILABLE_SITES_PATH##*/})

## If enabling the'default' site then make sure that it's the

## first to be loaded.if [ "$1" == "default" ]; thenSITE_ENABLED="$ENABLED_SITES_PATH/default"

elseSITE_ENABLED="$ENABLED_SITES_PATH/$1"

fi## Checkifthe directory where we will place the symlink

## exists. If not create it.

[-d ${SITE_ENABLED%/*} ] || mkdir -p ${SITE_ENABLED%/*}

fi

## Check that the file corresponding to site exists if enabling or

## that the symbolic link exists if disabling. Perform the desired

## action if possible. If not signal an error and exit.

case $ACTION in

ENABLE)

# Change to the directory where we will place the symlink so that we

# see the relative path correctly.

cd "${SITE_ENABLED%/*}";

if [ -r $SITE_AVAILABLE ]; then

## Test for a well formed configuration only when we are

## root.

if [ -n "$IS_ROOT" ]; then

echo "Testing nginx configuration..."

$NGINX -t && STATUS=0

fi

## Check the config testing status and if the link exists already.

if [ $STATUS ] && [ -h $SITE_ENABLED ]; then

## If already enabled say it and exit.

echo "$1 is already enabled."

exit 0

else # Symlink if not yet enabled.

ln -s $SITE_AVAILABLE $SITE_ENABLED

fi

if [ $STATUS ]; then

echo -n "Site $1 has been enabled."

printf '\nRun "%s" to apply the changes.\n' "$STARTUP_PROGRAM_NAME"

exit 0

else

exit 5

fi

else

echo "Site configuration file $1 not found." >&2

exit 6

fi

;;

DISABLE)

if [ "$1" = "default" ] ; then

if [ -h "$ENABLED_SITES_PATH/default" ] ; then

SITE_ENABLED="$ENABLED_SITES_PATH/default"

fi

fi

if [ -h $SITE_ENABLED ]; then

rm $SITE_ENABLED

echo -n "Site $1 has been disabled."

printf '\nRun "%s" to apply the changes.\n' "$STARTUP_PROGRAM_NAME"

exit 0

else

echo "Site $1 doesn't exist." >&2

exit 7

fi

;;

esac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值