title: Access internal IP over subdomain and DynDNS
body: <p>I'm currently setting up a pterodactyl server and I want to access it over web. I have a domain (example.com) and set up a dynamic DNS pointing to the external IP of my router. I now want to use a subdomain (ptero.example.com), to point to the internal IP of the server.
  My understanding is that I tell the subdomain to point to my external IP as well via a record (as this is the only way to access my internal network from the outside). Then I would need to configure a way for the router or server to identify the subdomain and route the request to the internal IP of the server. This is the part where I am stuck, as I'm not sure how to do it. The server is using nginx and I think i need to configure the .conf in /etc/nginx/sites-available and edit the location part, but I'm not quite sure. I pasted the current .conf file below (from <a href="https://pterodactyl.io/panel/1.0/webserver_configuration.html#nginx-with-ssl" rel="nofollow noreferrer">Webconfig with pterodactyl</a>)</p>
  <pre><code>server_tokens off;
  
  server {
      listen 80;
      server_name &lt;domain&gt;;
      return 301 https://$server_name$request_uri;
  }
  
  server {
      listen 443 ssl http2;
      server_name &lt;domain&gt;;
  
      root /var/www/pterodactyl/public;
      index index.php;
  
      access_log /var/log/nginx/pterodactyl.app-access.log;
      error_log  /var/log/nginx/pterodactyl.app-error.log error;
  
      # allow larger file uploads and longer script runtimes
      client_max_body_size 100m;
      client_body_timeout 120s;
  
      sendfile off;
  
      # SSL Configuration
      ssl_certificate /etc/letsencrypt/live/&lt;domain&gt;/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/&lt;domain&gt;/privkey.pem;
      ssl_session_cache shared:SSL:10m;
      ssl_protocols TLSv1.2 TLSv1.3;
      ssl_ciphers &quot;ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384&quot;;
      ssl_prefer_server_ciphers on;
  
      # See https://hstspreload.org/ before uncommenting the line below.
      # add_header Strict-Transport-Security &quot;max-age=15768000; preload;&quot;;
      add_header X-Content-Type-Options nosniff;
      add_header X-XSS-Protection &quot;1; mode=block&quot;;
      add_header X-Robots-Tag none;
      add_header Content-Security-Policy &quot;frame-ancestors 'self'&quot;;
      add_header X-Frame-Options DENY;
      add_header Referrer-Policy same-origin;
  
      location / {
          try_files $uri $uri/ /index.php?$query_string;
      }
  
      location ~ \.php$ {
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          fastcgi_pass unix:/run/php/php8.0-fpm.sock;
          fastcgi_index index.php;
          include fastcgi_params;
          fastcgi_param PHP_VALUE &quot;upload_max_filesize = 100M \n post_max_size=100M&quot;;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_param HTTP_PROXY &quot;&quot;;
          fastcgi_intercept_errors off;
          fastcgi_buffer_size 16k;
          fastcgi_buffers 4 16k;
          fastcgi_connect_timeout 300;
          fastcgi_send_timeout 300;
          fastcgi_read_timeout 300;
          include /etc/nginx/fastcgi_params;
      }
  
      location ~ /\.ht {
          deny all;
      }
  }
  </code></pre>