¿Cómo hacer que un servidor doméstico privado conectado a un servidor Wireguard en Cloud VPN sea accesible al público?

¿Cómo hacer que un servidor doméstico privado conectado a un servidor Wireguard en Cloud VPN sea accesible al público?

Básicamente, lo que quiero hacer es hacer que un servidor doméstico local sea accesible públicamente en Internet. Lamentablemente, mi ISP utiliza CGNAT y para obtener una IP pública, tengo que pagar más (alrededor de $50). Pensé que sería más barato usar VPS.

Así que configuré un servidor Wireguard en Google Cloud a través de Compute Engine VM con Ubuntu 20.04. También configuré un cliente Wireguard para mi servidor local en casa y lo conecté al servidor Wirequard en Google Cloud. Por último, configuré otro cliente Wireguard en mi teléfono Android, lo conecté al servidor y todo funciona bien. Cuando estoy en Wireguard en mi teléfono Android, puedo ver mi servidor local desde el exterior (usando datos móviles con fines de prueba).

Ahora quiero que el servidor local de casa esté disponible para el público. Tengo un dominio y configuré los registros necesarios. Cuando hago ping, devuelve la IP pública de la máquina virtual GCE, lo que creo que significa que está funcionando bien. Luego instalé Nginx en mi VM GCE. Esto funcionó bien. Pude acceder a la página predeterminada de Nginx a través del dominio y la dirección IP pública. Luego modifiqué la configuración predeterminada usando lo siguiente y reinicié Nginx después.

server {
    listen 80;
    listen [::]:80;

    server_name sub.domain.org; #sample only

    location / {
            proxy_redirect http://10.200.200.2 http://sub.domain.org;
    }
}

Mi Wireguard está en el rango de IP 10.200.200.x (no estoy seguro si este es el término correcto) y 10.200.200.2 es la dirección IP de Wireguard de mi servidor doméstico local.

Puede que no haya entendido cómo funciona Nginx, pero esperaba que a través de Nginx pudiera acceder públicamente a mi servidor doméstico local navegando.http://sub.dominio.org. Lamentablemente no pude acceder a él públicamente. Solo es accesible cuando me conecto a Wireguard.

¿Hay algo más que deba hacer?

Agradezco cualquier comentario.

Respuesta1

Deberías leer los documentos de ngx_http_proxy_moduleenhttp://nginx.org/en/docs/http/ngx_http_proxy_module.html.

Documentos para proxy_redirectestados:

Establece el texto que se debe cambiar en los campos de encabezado "Ubicación" y "Actualizar" de una respuesta del servidor proxy.

Por lo tanto, actualmente solo recomendó a nginx que cambiara parte del texto en algunos encabezados, pero que no pasara ningún tráfico al destino (servidor doméstico).

Necesitas, al menos, unproxy_passdirectivapara que eso funcione.

¡Tenga en cuenta que nginx no reemplaza el contenido de sus sitios! Entonces, si su sitio en su servidor doméstico ofrece rutas absolutas, debe solucionarlo.

información relacionada