[FAQ] Возможность включения в nginx редиректа на HTTPS
[FAQ] Возможность включения в nginx редиректа на HTTPS
1) В директорию /usr/local/vesta/bin/ добавляем файл v-change-web-domain-ssl-redirect с содержимым:
и устанавливаем на него права 770.
2) В файле /usr/local/vesta/web/edit/web/index.php находим строку:
И перед ней добавляем:
3) В файлах /usr/local/vesta/web/templates/admin/edit_web.html и /usr/local/vesta/web/templates/user/edit_web.html находим строки:
И после нее (после </tr> и до </table>) добавляем код:
4) В папке /etc/nginx/ создаем файл redirect.conf с содержимым:
5) В директории /usr/local/vesta/data/templates/web/nginx находим файлы caching.tpl, default.tpl, hosting.tpl, proxy_ip.tpl и после строки:
либо
добавляем:
6) В панели VestaCP необходимо выделить всех пользователей и выбрать действие "Rebuild".
источниг
v-change-web-domain-ssl-redirectShow
Code: Select all
#!/bin/bash
# info: Change redirect ssl for domain
# options: USER DOMAIN SELECTEDSSL [RESTART]
#
# The function turns on SSL support for a domain. Parameter ssl_dir is a path
# to directory where 2 or 3 ssl files can be found. Certificate file
# domain.tld.crt and its key domain.tld.key are mandatory. Certificate
# authority domain.tld.ca file is optional. If home directory parameter
# (ssl_home) is not set, https domain uses public_shtml as separate
# documentroot directory.
#----------------------------------------------------------#
# Variable&Function #
#----------------------------------------------------------#
# Argument defenition
user=$1
domain=$(idn -t --quiet -u "$2" )
domain_idn=$(idn -t --quiet -a "$domain")
selectedssl="$3"
restart="$4"
# Includes
source $VESTA/func/main.sh
source $VESTA/func/domain.sh
source $VESTA/func/ip.sh
source $VESTA/conf/vesta.conf
check_args '3' "$#" 'USER DOMAIN SELECTEDSSL [RESTART]'
validate_format 'user' 'domain' 'selectedssl'
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
is_object_valid 'user' 'USER' "$user"
is_object_unsuspended 'user' 'USER' "$user"
is_object_valid 'web' 'DOMAIN' "$domain"
is_object_unsuspended 'web' 'DOMAIN' "$domain"
conf="$HOMEDIR/$user/conf/web/nginx.conf"
getInc() {
if grep -q '#include /etc/nginx/redirect.conf; #'$1 $2
then exit
else sed -i 's/include \/etc\/nginx\/redirect.conf; #'$1'/#include \/etc\/nginx\/redirect.conf; #'$1'/g' $2
fi
}
if [ "$selectedssl" == 'yes' ]
then sed -i 's/#include \/etc\/nginx\/redirect.conf; #'$domain'/include \/etc\/nginx\/redirect.conf; #'$domain'/g' $conf
else getInc $domain $conf
fi
#if [ "$selectedssl" == 'yes' ]
#then
#sed -i 's/#include \/etc\/nginx\/redirect.conf; #'$domain'/include \/etc\/nginx\/redirect.conf; #'$domain'/g' $conf
#else
#sed -i 's/include \/etc\/nginx\/redirect.conf; #'$domain'/#include \/etc\/nginx\/redirect.conf; #'$domain'/g' $conf
#fi
chown root:$user $conf
chmod 640 $conf
#update_object_value 'web' 'DOMAIN' "$domain" 'SSL_REDIRECT' "$3"
add_object_key 'web' 'DOMAIN' "$domain" 'SSL_REDIRECT' 'TRUE'
# Restart web server
if [ "$restart" != 'no' ]; then
$BIN/v-restart-web
if [ $? -ne 0 ]; then
exit $E_RESTART
fi
$BIN/v-restart-proxy
if [ $? -ne 0 ]; then
exit $E_RESTART
fi
fi
# Logging
log_history "change ssl redirect for $domain"
log_event "$OK" "$EVENT"
exit
2) В файле /usr/local/vesta/web/edit/web/index.php находим строку:
Code: Select all
// Delete web stats
/usr/local/vesta/web/edit/web/index.phpShow
Code: Select all
// Change redirect to https
if (( $v_ssl == 'yes') && $_POST['v_ssl_redirect']=='yes' && (empty($_SESSION['error_msg']))) {
exec(VESTA_CMD."v-change-web-domain-ssl-redirect ".$user." ".$v_domain." yes yes", $output, $return_var);
check_return_code($return_var,$output);
unset($output);
}
else
if (( $v_ssl == 'yes') && $_POST['v_ssl_redirect']=='no' && (empty($_SESSION['error_msg']))) {
exec(VESTA_CMD."v-change-web-domain-ssl-redirect ".$user." ".$v_domain." no yes", $output, $return_var);
check_return_code($return_var,$output);
unset($output);
}
edit_web.htmlShow
Code: Select all
<tr>
<td>
<textarea size="20" class="vst-textinput" name="v_ssl_ca"><?php if (!empty($v_ssl_ca)) echo htmlentities($v_ssl_ca); ?></textarea>
</td>
</tr>
edit_web.htmlShow
Code: Select all
<tr>
<td class="vst-text input-label">
<?php print __('Redirect from HTTP to HTTPS');?>
</td>
</tr>
<tr>
<td>
<select class="vst-list" name="v_ssl_redirect">
<option selected></option>
<option value='yes'>
Enable
</option>
<option value='no'>
Disable
</option>
</select>
</td>
</tr>
/etc/nginx/redirect.confShow
Code: Select all
if ($ssl_protocol = "") {
rewrite ^/(.*) https://$server_name/$1 permanent;
}
Code: Select all
[b]server_name %domain_idn% %alias_idn%;[/b]
Code: Select all
server_name _;
Code: Select all
#include /etc/nginx/redirect.conf; #%domain_idn%
источниг