Last active
June 12, 2023 02:04
-
-
Save zaru/82c487c67ee25b55a3bd4c9ba926850c to your computer and use it in GitHub Desktop.
ngrok + nginx proxy (keep alive)
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
upstream http_backend { | |
server example.ngrok.io; | |
keepalive 128; | |
} | |
server { | |
listen 80 default_server; | |
listen [::]:80 default_server; | |
root /var/www/html; | |
server_name _; | |
client_max_body_size 20m; | |
location / { | |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
proxy_set_header X-Forwarded-Host $http_host; | |
proxy_set_header Host example.ngrok.io; | |
proxy_set_header X-CSRF-Token $http_x_csrf_token; | |
proxy_set_header X-Real-IP $remote_addr; | |
proxy_set_header X-Forwarded-Proto $scheme; | |
proxy_redirect off; | |
proxy_http_version 1.1; | |
proxy_set_header Connection ""; | |
proxy_pass http://http_backend/; | |
} | |
} |
I can't understand why but implicit proxy_pass via upstream doesn't work for me, so I used direct ngrok url instead. I also use https scheme, so my final configuration file is:
server {
server_name example.com;
listen 80;
listen [::]:80;
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header Host example.ngrok.io;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_pass https://example.ngrok.io/;
}
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello there :)
I have nginx on my laptop (macosx). Im using ngrok with
ngrok http mydomain.test:80 -host-header=mydomain.test
but when openning the website on remote deskop im getting ERR_NAME_NOT_RESOLVED for all statics (css/js..).
Do you know why?