Puncte:-1

Nginx works with IP address but not server name

drapel ca

I have Nginx running as a reverse proxy in front of Apache Guacamole. Everything works fine when accessing via IP address with XX.XX.XX.XX:8443. However I can't access via the server_name with "www.trainingserver1.com:8443". Here is the mysite.template file:

server {
    listen      80 default_server;
    server_name _;
    return 444  "No server is currently configured for the requested host." ;
}

server {
    listen       443 ssl;
    server_name  *.trainingserver1.com;

    ssl_certificate /etc/nginx/ssl/self.cert;
    ssl_certificate_key /etc/nginx/ssl/self-ssl.key;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_ecdh_curve secp384r1;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_stapling off;
    ssl_stapling_verify off;
#        resolver 8.8.8.8 8.8.4.4 valid=300s;
#        resolver_timeout 5s;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
    proxy_pass http://guacamole:8080;
    proxy_buffering off;
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_cookie_path /guacamole/ /;
    access_log off;
    # allow large uploads (default=1m)
    # 4096m = 4GByte
    client_max_body_size 4096m;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

Here is the nginx.conf file:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

And lastly here is the docker-compose.yml that starts everything:

version: '3'

networks:
  guacnetwork:
    driver: bridge

services:
  guacamole:
    image: oznu/guacamole
    container_name: guacamole
    volumes:
      - postgres:/config
    restart: always
    networks:
      guacnetwork:
    expose:
      - 8080
    restart: always

  nginx:
   restart: always
   image: nginx
   volumes:
   - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
   - ./nginx/mysite.template:/etc/nginx/conf.d/mysite.template
   - ./nginx/ssl:/etc/nginx/ssl
   ports:
   - 8443:443
   ##   environment:
   ##   - NGINX_HOST=nginx
   ##   - NGINX_PORT=443
   links:
   - guacamole
   networks:
     guacnetwork:
   # install openssl, create self-signed certificate and run nginx
   command: /bin/bash -c "apt-get -y update && apt-get -y install openssl && openssl req -nodes -newkey rsa:2048 -new -x509 -keyout /etc/nginx/ssl/self-ssl.key -out /etc/nginx/ssl/self.cert -subj '/C=DE/ST=BY/L=Hintertupfing/O=Dorfwirt/OU=Theke/CN=www.createyourown.domain/[email protected]' && cp -f -s /etc/nginx/conf.d/mysite.template /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"

volumes:
  postgres:
    driver: local

Edit:

Everything in the Nginx config turned out to be Ok. This was a simple DNS record issue. Once the DNS record was fixed then the Nginx server was accessible at www.trainingserver1.com:8443.

Michael Hampton avatar
drapel cz
Ai postat toate configurațiile, dar ai uitat să ne spui care este problema pe care o ai. Oferiți detalii, inclusiv intrările de jurnal.
djdomi avatar
drapel za
Cred că rulați o problemă precum `server_name *.trainingserver1.com;`, dar nu `server_name *.trainingserver1.com trainingsserver1.com;`, ceea ce v-ar permite să utilizați domeniul însuși în schimb doar un subdomeniu al domeniului și, de asemenea, să vă amintiți , doriți să utilizați un reverseproxy pentru 8443...
Jeremy Beale avatar
drapel ca
@djdomi Se pare că este aceeași problemă în ambele cazuri. Am încercat în ambele moduri și totuși pot accesa serverul doar după adresa IP, cum ar fi XX.XX.XX.XX:8443, dar nu după numele „www.trainingserver1.com:8443”
Jeremy Beale avatar
drapel ca
@MichaelHampton Puteți reproduce problema doar cu aceste fișiere? Toate cele 3 ar fi în același director. Apoi rulați `docker-compose up -d` pentru a porni nginx + guacamole. În sfârșit, încercați să accesați serverul fie prin adresa IP, fie prin numele serverului. Acolo dau de problema.
drapel in
Care este mesajul de eroare real pe care îl primiți? Rezolvarea numelui tău funcționează?
djdomi avatar
drapel za
@JeremyBeale de ce ar trebui să știe NGINX, când NU setați un proxy invers pentru acest caz? și în plus, pentru a utiliza *.trainingserver1.com, dn-ul trebuie să fie setat la wildcard sau www.trainingserver1.com trebuie să fie setat la o intrare DNS validă. - deoarece nu spuneți adevăratul nume de domeniu, nu este ușor să vă ajut - rulăm aici într-o [X-And-Y-Problem](https://faq-database.de/doku.php?id=en: problema x-și-y)
Jeremy Beale avatar
drapel ca
@GeraldSchneider Mesajul real din browserul web este DNS_PROBE_FINISHED_NXDOMAIN
drapel in
Deci, nu aveți o înregistrare DNS pentru acel IP. Creeaza una.
Jeremy Beale avatar
drapel ca
@GeraldSchneider Mulțumesc! Funcționează acum
Puncte:2
drapel in

Mesajul de eroare DNS_PROBE_FINISHED_NXDOMAIN indică faptul că adresa URL pe care încercați să o accesați nu poate fi rezolvată.

Trebuie să creați înregistrarea DNS pentru acea adresă URL.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.