mirror of
https://github.com/samuelhbne/server-xray.git
synced 2025-12-18 04:44:38 +03:00
Stream proxy-protocol support
This commit is contained in:
@@ -32,6 +32,8 @@ COPY nginx-proxy.tpl /etc/nginx/conf.d/
|
|||||||
COPY nginx-grpc.tpl /etc/nginx/conf.d/
|
COPY nginx-grpc.tpl /etc/nginx/conf.d/
|
||||||
COPY nginx-ws.tpl /etc/nginx/conf.d/
|
COPY nginx-ws.tpl /etc/nginx/conf.d/
|
||||||
|
|
||||||
|
COPY proxy-log-fmt.tpl /etc/nginx/conf.d/001-proxy-log-fmt.conf
|
||||||
|
|
||||||
ADD server-lgp.sh /server-lgp.sh
|
ADD server-lgp.sh /server-lgp.sh
|
||||||
ADD server-lgr.sh /server-lgr.sh
|
ADD server-lgr.sh /server-lgr.sh
|
||||||
ADD server-lgt.sh /server-lgt.sh
|
ADD server-lgt.sh /server-lgt.sh
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
#STSTUB
|
#STREAM_TAG
|
||||||
stream {
|
stream {
|
||||||
map $ssl_preread_server_name $stream_map {
|
map $ssl_preread_server_name $stream_map {
|
||||||
#XMAP-TAG
|
#XMAP_TAG
|
||||||
}
|
}
|
||||||
|
|
||||||
#XUPSTREAM-TAG
|
#XUPSTREAM_TAG
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen STPORT reuseport;
|
listen STPORT reuseport;
|
||||||
proxy_pass $stream_map;
|
proxy_pass $stream_map;
|
||||||
# proxy_bind $remote_addr transparent;
|
#STPROXY_PASS_TAG
|
||||||
ssl_preread on;
|
ssl_preread on;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
3
proxy-log-fmt.tpl
Normal file
3
proxy-log-fmt.tpl
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
log_format proxy '$proxy_protocol_addr - $remote_user [$time_local] "$request" '
|
||||||
|
'$status $body_bytes_sent "$http_referer" '
|
||||||
|
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||||
22
run.sh
22
run.sh
@@ -12,10 +12,10 @@ usage() {
|
|||||||
echo " --lgt <VLESS-GRPC-TLS option> p=13443,u=id1,u=id2...,s=svcname,d=domain.com"
|
echo " --lgt <VLESS-GRPC-TLS option> p=13443,u=id1,u=id2...,s=svcname,d=domain.com"
|
||||||
echo " --lsp <VLESS-SPLT-PLN option> p=14443,u=id1,u=id2...,w=/webpath"
|
echo " --lsp <VLESS-SPLT-PLN option> p=14443,u=id1,u=id2...,w=/webpath"
|
||||||
echo " --lst <VLESS-SPLT-TLS option> p=16443,u=id1,u=id2...,w=/webpath,d=domain.com"
|
echo " --lst <VLESS-SPLT-TLS option> p=16443,u=id1,u=id2...,w=/webpath,d=domain.com"
|
||||||
echo " --ltr <VLESS-TCP-RLTY option> p=17443,u=id1,u=id2...,d=dest.com,pub=xx,prv=yy[,shortId=ab],[xtls]"
|
echo " --ltr <VLESS-TCP-RLTY option> p=17443,u=id1,u=id2...,d=dest.com,pub=xx,prv=yy[,shortId=ab],[proxy_acpt],[xtls]"
|
||||||
echo " --ltrx <VLESS-TCP-RLTY-XTLS option> p=17443,u=id1,u=id2...,d=dest.com,pub=xx,prv=yy[,shortId=ab]"
|
echo " --ltrx <VLESS-TCP-RLTY-XTLS option> p=17443,u=id1,u=id2...,d=dest.com,pub=xx,prv=yy[,shortId=ab],[proxy_acpt]"
|
||||||
echo " --ltt <VLESS-TCP-TLS option> p=18443,u=id1,u=id2...,d=domain.com,[xtls]"
|
echo " --ltt <VLESS-TCP-TLS option> p=18443,u=id1,u=id2...,d=domain.com,[proxy_acpt],[xtls]"
|
||||||
echo " --lttx <VLESS-TCP-TLS-XTLS option> p=18443,u=id1,u=id2...,d=domain.com"
|
echo " --lttx <VLESS-TCP-TLS-XTLS option> p=18443,u=id1,u=id2...,d=domain.com,[proxy_acpt]"
|
||||||
echo " --lwp <VLESS-WS-PLN option> p=19443,u=id1,u=id2...,w=/wskpath"
|
echo " --lwp <VLESS-WS-PLN option> p=19443,u=id1,u=id2...,w=/wskpath"
|
||||||
echo " --lwt <VLESS-WS-TLS option> p=22443,u=id1,u=id2...,w=/wskpath,d=domain.com"
|
echo " --lwt <VLESS-WS-TLS option> p=22443,u=id1,u=id2...,w=/wskpath,d=domain.com"
|
||||||
echo " --mtt <VMESS-TCP-TLS option> p=23443,u=id1,u=id2...,d=domain.com"
|
echo " --mtt <VMESS-TCP-TLS option> p=23443,u=id1,u=id2...,d=domain.com"
|
||||||
@@ -24,9 +24,9 @@ usage() {
|
|||||||
echo " --ttt <TROJAN-TCP-TLS option> p=26443,u=pw1,u=pw2...,d=domain.com"
|
echo " --ttt <TROJAN-TCP-TLS option> p=26443,u=pw1,u=pw2...,d=domain.com"
|
||||||
echo " --twp <TROJAN-WS-PLN option> p=27443,u=pw1,u=pw2...,w=/wskpath"
|
echo " --twp <TROJAN-WS-PLN option> p=27443,u=pw1,u=pw2...,w=/wskpath"
|
||||||
echo " --twt <TROJAN-WS-TLS option> p=28443,u=pw1,u=pw2...,w=/wskpath,d=domain.com"
|
echo " --twt <TROJAN-WS-TLS option> p=28443,u=pw1,u=pw2...,w=/wskpath,d=domain.com"
|
||||||
echo " --ng-server <nginx-server-options> p=8443,d=domain0.com,d=domain1.com..."
|
echo " --ng-server <nginx-server-options> p=8443,d=domain0.com,d=domain1.com...,[proxy_acpt]"
|
||||||
echo " --ng-proxy <nginx-proxy-options> d=domain0.com,d=domain1.com,p=port-backend,l=location,n=ws|grpc|splt"
|
echo " --ng-proxy <nginx-proxy-options> d=domain0.com,d=domain1.com,p=port-backend,l=location,n=ws|grpc|splt"
|
||||||
echo " --st-port <stream-port-number> 443"
|
echo " --st-server <stream-port-number> [p=443],[proxy_pass]"
|
||||||
echo " --st-map <stream-map-options> sni=domain.com,ups=127.0.0.1:8443"
|
echo " --st-map <stream-map-options> sni=domain.com,ups=127.0.0.1:8443"
|
||||||
echo " --domain-block <domain-rule> Add a domain rule for routing-server block, like geosite:category-ads-all"
|
echo " --domain-block <domain-rule> Add a domain rule for routing-server block, like geosite:category-ads-all"
|
||||||
echo " --ip-block <ip-rule> Add a ip-addr rule for routing block, like geoip:private"
|
echo " --ip-block <ip-rule> Add a ip-addr rule for routing block, like geoip:private"
|
||||||
@@ -42,7 +42,7 @@ usage() {
|
|||||||
|
|
||||||
Jrules='{"rules":[]}'
|
Jrules='{"rules":[]}'
|
||||||
|
|
||||||
TEMP=`getopt -o u:k:r:c:j:di --long lgp:,lgr:,lgt:,lsp:,lst:,ltr:,ltrx:,ltt:,lttx:,lwp:,lwt:,mtt:,mwp:,mwt:,ttt:,twp:,twt:,user:,hook:,request-domain:,cert-home:,ip-block:,domain-block:,cn-block,ng-server:,ng-proxy:,st-port:,st-map:,json:,stdin,debug -n "$0" -- $@`
|
TEMP=`getopt -o u:k:r:c:j:di --long lgp:,lgr:,lgt:,lsp:,lst:,ltr:,ltrx:,ltt:,lttx:,lwp:,lwt:,mtt:,mwp:,mwt:,ttt:,twp:,twt:,user:,hook:,request-domain:,cert-home:,ip-block:,domain-block:,cn-block,ng-server:,ng-proxy:,st-server:,st-map:,json:,stdin,debug -n "$0" -- $@`
|
||||||
if [ $? != 0 ] ; then usage; exit 1 ; fi
|
if [ $? != 0 ] ; then usage; exit 1 ; fi
|
||||||
|
|
||||||
eval set -- "$TEMP"
|
eval set -- "$TEMP"
|
||||||
@@ -114,8 +114,8 @@ while true ; do
|
|||||||
NGPROXY+=("$2")
|
NGPROXY+=("$2")
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
--st-port)
|
--st-server)
|
||||||
STPORT="$2"
|
STSVR="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
--st-map)
|
--st-map)
|
||||||
@@ -191,8 +191,8 @@ if [ -z "${SVCMD}" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Start Nginx if necessary
|
# Start Nginx if necessary
|
||||||
if [ -n "${STPORT}" ]; then
|
if [ -n "${STSVR}" ]; then
|
||||||
NGOPT="--st-port ${STPORT}"
|
NGOPT="--st-server ${STSVR}"
|
||||||
for mapopt in "${STMAP[@]}"
|
for mapopt in "${STMAP[@]}"
|
||||||
do
|
do
|
||||||
NGOPT="${NGOPT} --st-map $mapopt"
|
NGOPT="${NGOPT} --st-map $mapopt"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ DIR=`dirname $0`
|
|||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "VLESS-TCP-REALITY server builder"
|
echo "VLESS-TCP-REALITY server builder"
|
||||||
echo "Usage: server-ltr <x=xray-config-file>,<c=cert-home-dir>,<p=listen-port>,[xtls],<d=dest.com>,[pub=xx,prv=yy,shortId=zz],<u=id0>,<u=id1>..."
|
echo "Usage: server-ltr <x=xray-config-file>,<c=cert-home-dir>,<p=listen-port>,[xtls],[proxy_acpt],<d=dest.com>,[pub=xx,prv=yy,shortId=zz],<u=id0>,<u=id1>..."
|
||||||
}
|
}
|
||||||
|
|
||||||
options=(`echo $1 |tr ',' ' '`)
|
options=(`echo $1 |tr ',' ' '`)
|
||||||
@@ -27,6 +27,9 @@ do
|
|||||||
p|port)
|
p|port)
|
||||||
port="${kv[1]}"
|
port="${kv[1]}"
|
||||||
;;
|
;;
|
||||||
|
proxy_acpt)
|
||||||
|
acceptProxyProtocol=true
|
||||||
|
;;
|
||||||
shortId)
|
shortId)
|
||||||
shortIds+=("${kv[1]}")
|
shortIds+=("${kv[1]}")
|
||||||
;;
|
;;
|
||||||
@@ -106,6 +109,13 @@ do
|
|||||||
cat $XCONF |${DIR}/fallback.sh -p $port -f ${fb} | sponge $XCONF
|
cat $XCONF |${DIR}/fallback.sh -p $port -f ${fb} | sponge $XCONF
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# StreamSettings
|
||||||
|
if [ -n "${acceptProxyProtocol}" ]; then
|
||||||
|
cat $XCONF |jq --arg port "${port}" \
|
||||||
|
'( .inbounds[] | select(.port == ($port|tonumber)) | .streamSettings ) += {"sockopt":{"acceptProxyProtocol":true}} ' \
|
||||||
|
|sponge $XCONF
|
||||||
|
fi
|
||||||
|
|
||||||
# Network settings
|
# Network settings
|
||||||
cat $XCONF |jq --arg port "${port}" \
|
cat $XCONF |jq --arg port "${port}" \
|
||||||
'( .inbounds[] | select(.port == ($port|tonumber)) | .streamSettings ) += {"network":"tcp"} ' \
|
'( .inbounds[] | select(.port == ($port|tonumber)) | .streamSettings ) += {"network":"tcp"} ' \
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ DIR=`dirname $0`
|
|||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "VLESS-TCP-TLS server builder"
|
echo "VLESS-TCP-TLS server builder"
|
||||||
echo "Usage: server-ltt <x=xray-config-file>,<c=cert-home-dir>,<p=listen-port>,[xtls],<d=domain.com>,<u=id0>,<u=id1>..."
|
echo "Usage: server-ltt <x=xray-config-file>,<c=cert-home-dir>,<p=listen-port>,[xtls],[proxy_acpt],<d=domain.com>,<u=id0>,<u=id1>..."
|
||||||
}
|
}
|
||||||
|
|
||||||
options=(`echo $1 |tr ',' ' '`)
|
options=(`echo $1 |tr ',' ' '`)
|
||||||
@@ -27,6 +27,9 @@ do
|
|||||||
p|port)
|
p|port)
|
||||||
port="${kv[1]}"
|
port="${kv[1]}"
|
||||||
;;
|
;;
|
||||||
|
proxy_acpt)
|
||||||
|
acceptProxyProtocol=true
|
||||||
|
;;
|
||||||
u|user)
|
u|user)
|
||||||
xuser+=("${kv[1]}")
|
xuser+=("${kv[1]}")
|
||||||
;;
|
;;
|
||||||
@@ -106,6 +109,13 @@ do
|
|||||||
cat $XCONF |${DIR}/fallback.sh -p $port -f ${fb} | sponge $XCONF
|
cat $XCONF |${DIR}/fallback.sh -p $port -f ${fb} | sponge $XCONF
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# StreamSettings
|
||||||
|
if [ -n "${acceptProxyProtocol}" ]; then
|
||||||
|
cat $XCONF |jq --arg port "${port}" \
|
||||||
|
'( .inbounds[] | select(.port == ($port|tonumber)) | .streamSettings ) += {"sockopt":{"acceptProxyProtocol":true}} ' \
|
||||||
|
|sponge $XCONF
|
||||||
|
fi
|
||||||
|
|
||||||
# Network settings
|
# Network settings
|
||||||
cat $XCONF |jq --arg port "${port}" \
|
cat $XCONF |jq --arg port "${port}" \
|
||||||
'( .inbounds[] | select(.port == ($port|tonumber)) | .streamSettings ) += {"network":"tcp"} ' \
|
'( .inbounds[] | select(.port == ($port|tonumber)) | .streamSettings ) += {"network":"tcp"} ' \
|
||||||
|
|||||||
123
server-nginx.sh
123
server-nginx.sh
@@ -2,40 +2,44 @@
|
|||||||
|
|
||||||
DIR=`dirname $0`
|
DIR=`dirname $0`
|
||||||
DIR="$(cd $DIR; pwd)"
|
DIR="$(cd $DIR; pwd)"
|
||||||
TPL="site-ssl.conf.tpl"
|
SITE_TPL="site-ssl.conf.tpl"
|
||||||
STPL="nginx-stream.tpl"
|
STREAM_TPL="nginx-stream.tpl"
|
||||||
NGCONF="/etc/nginx/nginx.conf"
|
NGCONF="/etc/nginx/nginx.conf"
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "server-nginx --ng-server <c=certhome,d=domain>[,p=443] --ng-proxy <p=xport,l=location,n=grpc|ws|splt>[,h=127.0.0.1]"
|
echo "server-nginx --ng-server <c=certhome,d=domain>[,p=443] --ng-proxy <p=xport,l=location,n=grpc|ws|splt>[,h=127.0.0.1]"
|
||||||
echo " --ng-proxy <p=port-backend,l=location-path,n=grpc|ws|splt>[,h=127.0.0.1][,d=host-domain]"
|
echo " --ng-proxy <p=port-backend,l=location-path,n=grpc|ws|splt>[,h=127.0.0.1][,d=host-domain]"
|
||||||
echo " --ng-server <c=cert-home-dir,d=host-domain>[,p=443]"
|
echo " --ng-server <c=cert-home-dir,d=host-domain>[,p=443],[proxy_acpt]"
|
||||||
echo " --st-map <sni=domain.com,ups=127.0.0.1:8443>"
|
echo " --st-map <sni=domain.com,ups=127.0.0.1:8443>"
|
||||||
echo " --st-port <port-num>"
|
echo " --st-server [p=443],[proxy_pass]"
|
||||||
}
|
}
|
||||||
|
|
||||||
TEMP=`getopt -o m:p:s:x: --long ng-server:,ng-proxy:,st-map:,st-port: -n "$0" -- $@`
|
TEMP=`getopt -o m:n:p:s:x: --long ng-server:,ng-proxy:,st-server:,st-map: -n "$0" -- $@`
|
||||||
if [ $? != 0 ] ; then usage; exit 1 ; fi
|
if [ $? != 0 ] ; then usage; exit 1 ; fi
|
||||||
|
|
||||||
eval set -- "$TEMP"
|
eval set -- "$TEMP"
|
||||||
while true ; do
|
while true ; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-m|--st-map)
|
# Multiple Nginx domain servers Allowed
|
||||||
STMAP+=("$2")
|
-n|--ng-server)
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
-p|--st-port)
|
|
||||||
STPORT="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
-s|--ng-server)
|
|
||||||
NGSVR+=("$2")
|
NGSVR+=("$2")
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
# Multiple Nginx proxy locations Allowed
|
||||||
-x|--ng-proxy)
|
-x|--ng-proxy)
|
||||||
NGPROXY+=("$2")
|
NGPROXY+=("$2")
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
# Only SINGLE Stream server Allowed
|
||||||
|
-s|--st-server)
|
||||||
|
STSVR="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
# Multiple Nginx SNI map items Allowed
|
||||||
|
-m|--st-map)
|
||||||
|
STMAP+=("$2")
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
--)
|
--)
|
||||||
shift
|
shift
|
||||||
break
|
break
|
||||||
@@ -49,7 +53,7 @@ while true ; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [ -z "${NGSVR}" ] && [ -z "${STPORT}" ]; then
|
if [ -z "${NGSVR}" ] && [ -z "${STPORT}" ]; then
|
||||||
echo "No server/stream defined. Quit.";
|
echo "No Stream/Server defined. Quit.";
|
||||||
usage;
|
usage;
|
||||||
exit 1;
|
exit 1;
|
||||||
fi
|
fi
|
||||||
@@ -63,16 +67,36 @@ if [ -f /etc/nginx/conf.d/default.conf ]; then
|
|||||||
mv default.conf default.conf.disable
|
mv default.conf default.conf.disable
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Remove all lines generated previously after #STSTUB tag.
|
# Remove all lines generated previously after #STREAM_TAG tag.
|
||||||
sed -i '/\#STSTUB/q' /etc/nginx/nginx.conf
|
sed -i '/\#STREAM_TAG/q' /etc/nginx/nginx.conf
|
||||||
# Remove #STSTUB tag
|
# Remove #STREAM_TAG tag
|
||||||
sed -i '/\#STSTUB/d' /etc/nginx/nginx.conf
|
sed -i '/\#STREAM_TAG/d' /etc/nginx/nginx.conf
|
||||||
|
# Remove temp files generated previously.
|
||||||
|
rm /tmp/stmap.conf; rm /tmp/stups.conf; rm /tmp/stproxy.conf
|
||||||
|
|
||||||
|
if [ -n "${STSVR}" ]; then
|
||||||
|
options=(`echo $STSVR |tr ',' ' '`)
|
||||||
|
for option in "${options[@]}"
|
||||||
|
do
|
||||||
|
kv=(`echo $option |tr '=' ' '`)
|
||||||
|
case "${kv[0]}" in
|
||||||
|
p|port)
|
||||||
|
STPORT="${kv[1]}"
|
||||||
|
;;
|
||||||
|
x|proxy_pass)
|
||||||
|
STPROXY_PASS=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "${STPORT}" ]; then STPORT=443; fi
|
||||||
|
if ! [ "${STPORT}" -eq "${STPORT}" ] 2>/dev/null; then
|
||||||
|
>&2 echo "Stream port number must be numeric";
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -n "${STPORT}" ]; then
|
|
||||||
rm /tmp/map.conf
|
|
||||||
rm /tmp/ups.conf
|
|
||||||
# Attach the stream configuration to the tail of nginx.conf
|
# Attach the stream configuration to the tail of nginx.conf
|
||||||
cat ${STPL} >> /etc/nginx/nginx.conf
|
cat ${STREAM_TPL} >> /etc/nginx/nginx.conf
|
||||||
for stmap in "${STMAP[@]}"
|
for stmap in "${STMAP[@]}"
|
||||||
do
|
do
|
||||||
options=(`echo $stmap |tr ',' ' '`)
|
options=(`echo $stmap |tr ',' ' '`)
|
||||||
@@ -88,17 +112,26 @@ if [ -n "${STPORT}" ]; then
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
# Named the upstream as yahoo_com for SNI yahoo.com
|
||||||
upsname=`echo $sni|sed 's/\./_/g'`
|
upsname=`echo $sni|sed 's/\./_/g'`
|
||||||
echo " $sni $upsname;" >>/tmp/map.conf
|
echo " $sni $upsname;" >>/tmp/stmap.conf
|
||||||
echo " upstream $upsname {" >>/tmp/ups.conf
|
echo " upstream $upsname {" >>/tmp/stups.conf
|
||||||
echo " server $upstream;" >>/tmp/ups.conf
|
echo " server $upstream;" >>/tmp/stups.conf
|
||||||
echo " }" >>/tmp/ups.conf
|
echo " }" >>/tmp/stups.conf
|
||||||
done
|
done
|
||||||
# Add map.conf down to #MAPSTUB tag
|
|
||||||
sed -i '/#XMAP-TAG/r /tmp/map.conf' /etc/nginx/nginx.conf
|
# Add map.conf down to #XMAP_TAG tag
|
||||||
# Add ups.conf down to #UPSSTUB tag
|
sed -i '/#XMAP_TAG/r /tmp/stmap.conf' /etc/nginx/nginx.conf
|
||||||
sed -i '/#XUPSTREAM-TAG/r /tmp/ups.conf' /etc/nginx/nginx.conf
|
# Add ups.conf down to #XUPSTREAM_TAG tag
|
||||||
|
sed -i '/#XUPSTREAM_TAG/r /tmp/stups.conf' /etc/nginx/nginx.conf
|
||||||
sed -i "s/STPORT/${STPORT}/g" /etc/nginx/nginx.conf
|
sed -i "s/STPORT/${STPORT}/g" /etc/nginx/nginx.conf
|
||||||
|
# Add "proxy_protocol=on" down to #STPROXY_PASS_TAG tag
|
||||||
|
if [ -n "${STPROXY_PASS}" ]; then
|
||||||
|
echo " proxy_protocol on;" >/tmp/stproxy.conf
|
||||||
|
sed -i '/#STPROXY_PASS_TAG/r /tmp/stproxy.conf' /etc/nginx/nginx.conf
|
||||||
|
fi
|
||||||
|
echo "Generated /etc/nginx/nginx.conf ====>"
|
||||||
|
cat /etc/nginx/nginx.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for ngsvr in "${NGSVR[@]}"
|
for ngsvr in "${NGSVR[@]}"
|
||||||
@@ -119,6 +152,9 @@ do
|
|||||||
domain="${kv[1]}"
|
domain="${kv[1]}"
|
||||||
DOMAIN+=("${kv[1]}")
|
DOMAIN+=("${kv[1]}")
|
||||||
;;
|
;;
|
||||||
|
proxy_acpt)
|
||||||
|
NGPROTOCOL="proxy_protocol"
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -137,12 +173,21 @@ do
|
|||||||
|
|
||||||
ESC_CERTFILE=$(printf '%s\n' "${fullchain}" | sed -e 's/[]\/$*.^[]/\\&/g')
|
ESC_CERTFILE=$(printf '%s\n' "${fullchain}" | sed -e 's/[]\/$*.^[]/\\&/g')
|
||||||
ESC_PRVKEYFILE=$(printf '%s\n' "${prvkey}" | sed -e 's/[]\/$*.^[]/\\&/g')
|
ESC_PRVKEYFILE=$(printf '%s\n' "${prvkey}" | sed -e 's/[]\/$*.^[]/\\&/g')
|
||||||
cat ${TPL} \
|
cat "${SITE_TPL}" \
|
||||||
| sed "s/CERTFILE/${ESC_CERTFILE}/g" \
|
| sed "s/CERTFILE/${ESC_CERTFILE}/g" \
|
||||||
| sed "s/PRVKEYFILE/${ESC_PRVKEYFILE}/g" \
|
| sed "s/PRVKEYFILE/${ESC_PRVKEYFILE}/g" \
|
||||||
| sed "s/NGDOMAIN/${domain}/g" \
|
| sed "s/NGDOMAIN/${domain}/g" \
|
||||||
| sed "s/NGPORT/${port}/g" \
|
| sed "s/NGPORT/${port}/g" \
|
||||||
|
| sed "s/NGPROTOCOL/${NGPROTOCOL}/g" \
|
||||||
>"${domain}.conf"
|
>"${domain}.conf"
|
||||||
|
# Applying proxy log format instead of main format when --ng-server proxy_pass was set
|
||||||
|
if [ -n "${NGPROTOCOL}" ]; then
|
||||||
|
sed -i '/access_log/s/main/proxy/' "${domain}.conf"
|
||||||
|
sed -i 's/remote_addr/proxy_protocol_addr/g' "${domain}.conf"
|
||||||
|
sed -i 's/proxy_add_x_forwarded_for/proxy_protocol_addr/g' "${domain}.conf"
|
||||||
|
fi
|
||||||
|
echo "Generated /etc/nginx/conf.d/${domain}.conf ====>"
|
||||||
|
cat /etc/nginx/conf.d/${domain}.conf
|
||||||
done
|
done
|
||||||
|
|
||||||
for ngproxy in "${NGPROXY[@]}"
|
for ngproxy in "${NGPROXY[@]}"
|
||||||
@@ -184,19 +229,27 @@ do
|
|||||||
# Add tpl file content down to #LOCATION tag
|
# Add tpl file content down to #LOCATION tag
|
||||||
case "${xnetwork}" in
|
case "${xnetwork}" in
|
||||||
ws|websocket)
|
ws|websocket)
|
||||||
sed -i '/#XLOCATION-TAG/r nginx-ws.tpl' ${domain}.conf
|
sed -i '/#XLOCATION_TAG/r nginx-ws.tpl' ${domain}.conf
|
||||||
;;
|
;;
|
||||||
grpc)
|
grpc)
|
||||||
sed -i '/#XLOCATION-TAG/r nginx-grpc.tpl' ${domain}.conf
|
sed -i '/#XLOCATION_TAG/r nginx-grpc.tpl' ${domain}.conf
|
||||||
;;
|
;;
|
||||||
splt|proxy)
|
splt|proxy)
|
||||||
sed -i '/#XLOCATION-TAG/r nginx-proxy.tpl' ${domain}.conf
|
sed -i '/#XLOCATION_TAG/r nginx-proxy.tpl' ${domain}.conf
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
ESC_LOCATION=$(printf '%s\n' "${xlocation}" | sed -e 's/[]\/$*.^[]/\\&/g')
|
ESC_LOCATION=$(printf '%s\n' "${xlocation}" | sed -e 's/[]\/$*.^[]/\\&/g')
|
||||||
sed -i "s/HOST/${xhost}/g" ${domain}.conf
|
sed -i "s/HOST/${xhost}/g" ${domain}.conf
|
||||||
sed -i "s/PORT/${xport}/g" ${domain}.conf
|
sed -i "s/PORT/${xport}/g" ${domain}.conf
|
||||||
sed -i "s/WEBPATH/${ESC_LOCATION}/g" ${domain}.conf
|
sed -i "s/WEBPATH/${ESC_LOCATION}/g" ${domain}.conf
|
||||||
|
# Applying proxy log format instead of main format when --ng-server proxy_pass was set
|
||||||
|
if [ -n "${NGPROTOCOL}" ]; then
|
||||||
|
sed -i '/access_log/s/main/proxy/' "${domain}.conf"
|
||||||
|
sed -i 's/remote_addr/proxy_protocol_addr/g' "${domain}.conf"
|
||||||
|
sed -i 's/proxy_add_x_forwarded_for/proxy_protocol_addr/g' "${domain}.conf"
|
||||||
|
fi
|
||||||
|
echo "Generated /etc/nginx/conf.d/${domain}.conf ====>"
|
||||||
|
cat /etc/nginx/conf.d/${domain}.conf
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
server {
|
server {
|
||||||
listen NGPORT quic;
|
listen NGPORT quic;
|
||||||
listen NGPORT ssl;
|
listen NGPORT ssl NGPROTOCOL;
|
||||||
listen [::]:NGPORT ssl;
|
listen [::]:NGPORT ssl NGPROTOCOL;
|
||||||
http2 on;
|
http2 on;
|
||||||
server_name NGDOMAIN;
|
server_name NGDOMAIN;
|
||||||
ssl_certificate CERTFILE;
|
ssl_certificate CERTFILE;
|
||||||
@@ -15,9 +15,11 @@ server {
|
|||||||
client_header_timeout 1071906480m;
|
client_header_timeout 1071906480m;
|
||||||
keepalive_timeout 1071906480m;
|
keepalive_timeout 1071906480m;
|
||||||
|
|
||||||
|
access_log /var/log/nginx/access.log main;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
return 404;
|
return 404;
|
||||||
}
|
}
|
||||||
|
|
||||||
#XLOCATION-TAG
|
#XLOCATION_TAG
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user