Last active
March 7, 2021 04:18
-
-
Save kongkx/efd22fb83ebb7625bc7791ff607a188c to your computer and use it in GitHub Desktop.
nginx reverse-proxy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
server { | |
listen 80; | |
listen [::]:80 ; | |
server_name example.kongkx.com; | |
# root /var/www/example; | |
return 301 https://$host$request_uri; | |
} | |
server { | |
listen 443 ssl http2; | |
listen [::]:443 ssl http2; | |
server_name example.kongkx.com; | |
ssl_certificate /etc/letsencrypt/live/example.kongkx.com/cert.pem; | |
ssl_certificate_key /etc/letsencrypt/live/example.kongkx.com/privkey.pem; | |
access_log /var/log/nginx/example_access.log; | |
# 添加 certbot challenge | |
include /etc/nginx/snippets/letsencrypt-acme-challenge.conf; | |
location / { | |
proxy_pass http://127.0.0.1:8081; | |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
proxy_set_header X-Forwarded-Proto https; | |
proxy_set_header Host $host; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############################################################################# | |
# Configuration file for Let's Encrypt ACME Challenge location | |
# This file is already included in listen_xxx.conf files. | |
# Do NOT include it separately! | |
############################################################################# | |
# | |
# This config enables to access /.well-known/acme-challenge/xxxxxxxxxxx | |
# on all our sites (HTTP), including all subdomains. | |
# This is required by ACME Challenge (webroot authentication). | |
# You can check that this location is working by placing ping.txt here: | |
# /var/www/letsencrypt/.well-known/acme-challenge/ping.txt | |
# And pointing your browser to: | |
# http://xxx.domain.tld/.well-known/acme-challenge/ping.txt | |
# | |
# Sources: | |
# https://community.letsencrypt.org/t/howto-easy-cert-generation-and-renewal-with-nginx/3491 | |
# | |
############################################################################# | |
# Rule for legitimate ACME Challenge requests (like /.well-known/acme-challenge/xxxxxxxxx) | |
# We use ^~ here, so that we don't check other regexes (for speed-up). We actually MUST cancel | |
# other regex checks, because in our other config files have regex rule that denies access to files with dotted names. | |
location ^~ /.well-known/acme-challenge/ { | |
# Set correct content type. According to this: | |
# https://community.letsencrypt.org/t/using-the-webroot-domain-verification-method/1445/29 | |
# Current specification requires "text/plain" or no content header at all. | |
# It seems that "text/plain" is a safe option. | |
default_type "text/plain"; | |
# This directory must be the same as in /etc/letsencrypt/cli.ini | |
# as "webroot-path" parameter. Also don't forget to set "authenticator" parameter | |
# there to "webroot". | |
# Do NOT use alias, use root! Target directory is located here: | |
# /var/www/common/letsencrypt/.well-known/acme-challenge/ | |
root /var/www/letsencrypt; | |
} | |
# Hide /acme-challenge subdirectory and return 404 on all requests. | |
# It is somewhat more secure than letting Nginx return 403. | |
# Ending slash is important! | |
location = /.well-known/acme-challenge/ { | |
return 404; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment