Compare commits
4 Commits
master
...
nginx-stre
Author | SHA1 | Date |
---|---|---|
|
b6749b2785 | 8 months ago |
|
7cd8e20405 | 8 months ago |
|
a4a7bf0187 | 8 months ago |
|
7a2079e3ef | 8 months ago |
@ -0,0 +1,17 @@ |
|||||||
|
FROM nginx:alpine |
||||||
|
|
||||||
|
ENV HTTPS_UPSTREAM="proxy" |
||||||
|
ENV SSTP_UPSTREAM="sstp" |
||||||
|
ENV SNI_NAME="cloud.bearns.me" |
||||||
|
# self signed for client certification |
||||||
|
# put in /etc/nginx/certs/ |
||||||
|
ENV CA_CERT="chain.pem" |
||||||
|
# put in /etc/nginx/certs/$SNI_NAME |
||||||
|
ENV CERT="fullchain.pem" |
||||||
|
ENV KEY="key.pem" |
||||||
|
|
||||||
|
RUN rm -f /etc/nginx/conf.d/default.conf |
||||||
|
|
||||||
|
COPY nginx.conf /etc/nginx/ |
||||||
|
COPY *.conf.template /etc/nginx/templates/ |
||||||
|
|
@ -0,0 +1,37 @@ |
|||||||
|
http { |
||||||
|
|
||||||
|
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |
||||||
|
'$status $body_bytes_sent "$http_referer" ' |
||||||
|
'"$http_user_agent" "$http_x_forwarded_for"'; |
||||||
|
|
||||||
|
server { |
||||||
|
listen unix:/tmp/fallback-stream.socket ssl proxy_protocol; |
||||||
|
server_name _; |
||||||
|
|
||||||
|
ssl_certificate /etc/nginx/certs/${SNI_NAME}/${CERT}; |
||||||
|
ssl_certificate_key /etc/nginx/certs/${SNI_NAME}/${KEY}; |
||||||
|
|
||||||
|
access_log /dev/stdout main; |
||||||
|
|
||||||
|
location / { |
||||||
|
root /usr/share/nginx/html; |
||||||
|
index index.html index.htm; |
||||||
|
} |
||||||
|
|
||||||
|
#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 /usr/share/nginx/html; |
||||||
|
} |
||||||
|
|
||||||
|
# deny access to .htaccess files, if Apache's document root |
||||||
|
# concurs with nginx's one |
||||||
|
# |
||||||
|
#location ~ /\.ht { |
||||||
|
# deny all; |
||||||
|
#} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
user nginx; |
||||||
|
worker_processes auto; |
||||||
|
|
||||||
|
error_log /var/log/nginx/error.log notice; |
||||||
|
pid /var/run/nginx.pid; |
||||||
|
|
||||||
|
|
||||||
|
events { |
||||||
|
worker_connections 1024; |
||||||
|
} |
||||||
|
|
||||||
|
include /etc/nginx/conf.d/*.conf; |
@ -0,0 +1,61 @@ |
|||||||
|
error_log /dev/stderr; |
||||||
|
|
||||||
|
stream { |
||||||
|
log_format stream '"$ssl_preread_server_name" $remote_addr [$time_local] ' |
||||||
|
'$protocol $status $bytes_sent $bytes_received "$upstream_addr" ' |
||||||
|
'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"'; |
||||||
|
|
||||||
|
map $ssl_preread_server_name $sni_name { |
||||||
|
${SNI_NAME} cert-check; |
||||||
|
default https; |
||||||
|
} |
||||||
|
|
||||||
|
upstream https { |
||||||
|
server ${HTTPS_UPSTREAM}:443; |
||||||
|
} |
||||||
|
|
||||||
|
upstream cert-check { |
||||||
|
server unix:/tmp/virtual-stream.socket; |
||||||
|
} |
||||||
|
|
||||||
|
server { |
||||||
|
listen 443; |
||||||
|
listen [::]:443; |
||||||
|
|
||||||
|
access_log /dev/stdout stream; |
||||||
|
|
||||||
|
proxy_pass $sni_name; |
||||||
|
ssl_preread on; |
||||||
|
# todo nginx-proxy by default don't listen proxy_protocol, enable it in both sides |
||||||
|
#proxy_protocol on; |
||||||
|
} |
||||||
|
|
||||||
|
map $ssl_client_verify $name { |
||||||
|
SUCCESS sstp; |
||||||
|
default fallback; |
||||||
|
} |
||||||
|
|
||||||
|
upstream sstp { |
||||||
|
server ${SSTP_UPSTREAM}:443; |
||||||
|
} |
||||||
|
|
||||||
|
upstream fallback { |
||||||
|
server unix:/tmp/fallback-stream.socket; |
||||||
|
} |
||||||
|
|
||||||
|
server { |
||||||
|
listen unix:/tmp/virtual-stream.socket ssl; |
||||||
|
|
||||||
|
ssl_certificate /etc/nginx/certs/${SNI_NAME}/${CERT}; |
||||||
|
ssl_certificate_key /etc/nginx/certs/${SNI_NAME}/${KEY}; |
||||||
|
|
||||||
|
ssl_trusted_certificate /etc/nginx/certs/${CA_CERT}; |
||||||
|
ssl_verify_client optional; |
||||||
|
|
||||||
|
# Doesn't work without it |
||||||
|
proxy_ssl on; |
||||||
|
|
||||||
|
proxy_pass $name; |
||||||
|
proxy_protocol on; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
server { |
||||||
|
listen 443 ssl; |
||||||
|
server_name _; |
||||||
|
ssl_certificate /etc/nginx/certs/cert.pem; |
||||||
|
ssl_certificate_key /etc/nginx/certs/privkey.pem; |
||||||
|
return 404; |
||||||
|
} |
@ -0,0 +1,3 @@ |
|||||||
|
FROM nginx:alpine |
||||||
|
|
||||||
|
COPY 00-default.conf /etc/nginx/conf.d/ |
Loading…
Reference in new issue