title: Trouble with Nginx configuration
body: <p>I am running a few services from my VM at home, and I'm having some issue in connection with bad bots and setting up a https redirect for my subdomains. I would highly appreciate any help in fixing these issues.</p>
  
  <p>The bad_bot issue is that if I enable it in the Nginx file, it won't let me open the webpage from any browser (throws a 403 error). The code is below:</p>
  
  <pre><code>map $http_user_agent $bad_bot {
      default     1;
    "~*\bUptimeRobot/2.0\b"       0;
  }
  </code></pre>
  
  <p>The other issue is that if I visit any of my subdomains by typing out the link in a browser, it redirects me to Port 80 instead of Port 443 by default. I would like to redirect to Port 443 for all cases. My <code>default</code> file contents are below:</p>
  
  <pre><code>include /etc/nginx/blockuseragents.rules;
  include /etc/nginx/bad_bots.rules;
  
  map $http_upgrade $connection_upgrade {  
      default upgrade;
      ''      close;
  }
  
  #server {
  # listen 80 default_server;
  #   listen [::]:80 default_server;
  #   server_name *.example.in;
  #   return 301 https://$server_name$request_uri;
  #}
  
  #Main Server Configuration Part
  server {
    #BlockedAgent
    if ($blockedagent) {
          return 403;
    }
  
    #Bad Bots Filtering
    #if ($bad_bot) {
    #      return 403;
    #}
  
    #Block Request Method
    #if ($request_method !~ ^(GET|HEAD|POST)$) {
    #      return 444;
    #}
  
    listen [::]:443 ssl http2;
    listen 443 ssl http2;
    server_name example.in;
    include /etc/nginx/conf.d/*.conf;
  
      #location / { 
      #root /usr/share/nginx/html;
      #index index.html index.htm index.nginx-debian.html;
      #try_files $uri /index.html;
      #}
  
      #SSL Configuration
      include /etc/nginx/ssl.conf;
  
      #Tautulli
      location /tautulli {
      proxy_pass http://192.168.0.12:8181;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Host $server_name;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Forwarded-Ssl on;
      }
  
      #Transmission Torrent Client
      location /transmission {
      proxy_pass http://192.168.0.12:9091;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
  
      #Radarr Movies
      location /radarr {
      proxy_pass http://192.168.0.12:7878;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
  
      #Sonarr TV Shows
      location /sonarr {
      proxy_pass http://192.168.0.12:8989;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
  
      #Ombi
      location /ombi/ {
      proxy_pass http://192.168.0.12:5000;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Host $server_name;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Ssl on;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_read_timeout  90;
      proxy_redirect http://192.168.0.12:5000 https://$host;
      }
      if ($http_referer ~* /ombi/) {
      rewrite ^/dist/([0-9\d*]).js /ombi/dist/$1.js last;
      }
  
      #Sabnzbd
      location /sabnzbd {
      proxy_pass http://192.168.0.12:8080;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
  
      #Jackett
      location /jackett {
      proxy_pass http://192.168.0.12:9117;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
  
  }
  
  #Home Assistant Block
  #Add entry in Cloudflare DNS ("CNAME home example.DynamicDNSProvider.com") to enable
  server {
    ##BlockedAgent
    #if ($blockedagent) {
    #      return 403;
    #}
  
    listen [::]:443 ssl http2;
    listen 443 ssl http2;
    server_name home.example.in;
    #return 301 https://$host$request_uri;
    include /etc/nginx/conf.d/*.conf;
  
      #SSL Configuration
      include /etc/nginx/ssl.conf;
  
      #Home Assistant
      location / {
      proxy_pass http://192.168.0.12:8123/;
      proxy_set_header Host $host;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
  
      #Home Assistant Google Assistant Block
      location /api/google_assistant {
      proxy_pass http://192.168.0.12:8123;
      proxy_set_header Host $host;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
  
      #Home Assistant API and Websocket
      location /api/websocket {
      proxy_pass http://192.168.0.12:8123/api/websocket;
      proxy_set_header Host $host;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
  
      #Home Assistant Notifications Fix
      location /api/notify.html5/callback {
      if ($http_authorization = "") { return 403; }
      allow all;
      proxy_pass http://192.168.0.12:8123;
      proxy_set_header Host $host;
      proxy_redirect http:// https://;
      }
  }
  
  #pfSense Block
  #Add entry in Cloudflare DNS ("CNAME pfsense example.DynamicDNSProvider.com") to enable
  server {
    #BlockedAgent
    if ($blockedagent) {
          return 403;
    }
  
    listen [::]:443 ssl http2;
    listen 443 ssl http2;
    server_name pfsense.example.in;
    #return 301 https://$host$request_uri;
    include /etc/nginx/conf.d/*.conf;
  
      #SSL Configuration
      include /etc/nginx/ssl.conf;
  
      location / {
          auth_basic "Restricted";
          auth_basic_user_file /etc/nginx/.htpasswd;
            proxy_pass https://192.168.0.1:443;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection $connection_upgrade;
          proxy_buffering off;
      }
  }
  
  #UniFi Controller Block
  #Add entry in Cloudflare DNS ("CNAME unifi example.DynamicDNSProvider.com") to enable
  server {
    #BlockedAgent
    if ($blockedagent) {
          return 403;
    }
  
    listen [::]:443 ssl http2;
    listen 443 ssl http2;
    server_name unifi.example.in;
    #return 301 https://$host$request_uri;
    include /etc/nginx/conf.d/*.conf;
  
      #SSL Configuration
      include /etc/nginx/ssl.conf;
  
      location / {
          #auth_basic "Restricted";
            #auth_basic_user_file /etc/nginx/.htpasswd;
            proxy_pass https://localhost:8443;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection $connection_upgrade;
          proxy_buffering off;
      }
  }
  
  #FreeNAS Block
  #Add entry in Cloudflare DNS ("CNAME newton example.DynamicDNSProvider.com") to enable
  server {
    #BlockedAgent
    if ($blockedagent) {
          return 403;
    }
  
    listen [::]:443 ssl http2;
    listen 443 ssl http2;
    server_name newton.example.in;
    #return 301 https://$host$request_uri;
    include /etc/nginx/conf.d/*.conf;
  
      #SSL Configuration
      include /etc/nginx/ssl.conf;
  
      location / {
          auth_basic "Restricted";
          auth_basic_user_file /etc/nginx/.htpasswd;
          proxy_pass https://192.168.0.10:443;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection $connection_upgrade;
          proxy_buffering off;
      }
  }
  
  #IPMI Block
  #Add entry in Cloudflare DNS ("CNAME ipmi example.DynamicDNSProvider.com") to enable
  server {
    #BlockedAgent
    if ($blockedagent) {
          return 403;
    }
  
    listen [::]:443 ssl http2;
    listen 443 ssl http2;
    server_name ipmi.example.in;
    #return 301 https://$server_name$request_uri;
    include /etc/nginx/conf.d/*.conf;
  
      #SSL Configuration
      include /etc/nginx/ssl.conf;
  
      location / {
          auth_basic "Restricted";
          auth_basic_user_file /etc/nginx/.htpasswd;
          proxy_pass https://192.168.0.8:443;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection $connection_upgrade;
          proxy_buffering off;
      }
  }
  </code></pre>