Skip to content

NGINX

Verschoben NGINX
1 1 593
  • NGINX ist ein Webserver, das Gegenstück zum Apache.

    Jetzt werden sich einige fragen, warum nimmt der keinen Apache? Bei der Installation von NodeBB brauchte ich einen Proxy und in der Anleitung bin ich über NGINX gestolpert. Das sah auch deutlich einfacher aus usw. Letztendlich bin ich dann dabei geblieben.

    Nun hält sich NGINX an die Pfadvorgaben vom Apache, was auch einen Umstieg relativ einfach macht. Man findet sich recht gut zurecht.

    Die Konfigurationsdateien findet man unter /etc/nginx Eine wichtige Datei ist dort die nginx.conf Die lassen wir hier aber mal außen vor, die Standard Konfiguration sollte für die ersten Schritte reichen.

    Wie im Apache liegen die Einstellungen unter

    • /etc/nginx/sites-available
    • /etc/nginx/sites-enabled

    Unter /etc/nginx/sites-available erstellt man eine Textdatei mit seinen Einstellungen und aktiviert diese mit

    sudo ln -s /etc/nginx/sites-available/test /etc/nginx/sites-enabled/
    

    Den Service NGINX steuert man wie folgt. Dieser Befehl testet die Konfiguration auf Plausiblität usw.

    sudo nginx -t
    

    Hiermit startet man den NGINX neu

     sudo service nginx restart
    

    Das sollten genug Grundlagen zum NGINX sein. Nun mal wieder was Praktisches 🙂

    Vorhaben

    Ein ROCKPro64 soll mir hier als Entwicklungsumgebung dienen. Der ROCKPro64 ist mit einer 500GB NVMe SSD als System ausgerüstet, dazu gesellt sich eine 1TB 2,5 Zoll HDD als Backup-Medium.

    Es sollen also die Standarddienste darauf laufen wie

    • NGINX
    • MariaDB
    • php7.2
    • php7.2-fpm

    Um das jetzt vernünftig bedienen zu können, brauchen wir eine phpMyAdmin Installation. Jetzt sind wir aber gezwungen den NGINX so zu konfigurieren, das wir mit zwei Webseiten gleichzeitig arbeiten können. Ich habe etwas länger gebraucht um das System zu kapieren, obwohl es gar nicht so schwer ist 😉

    Zwei Dienste sollen laufen

    • phpMyAdmin
    • eine PHP Anwendung

    Dazu brauchen wir zwei Textdateien in /etc/nginx/sites-available

    phpmyadmin

     server {
            listen 80 default_server;
            #listen [::]:80;
    
            root /var/www/phpMyAdmin;
    
            index index.html index.htm index.php;
    
            server_name phpmyadmin.com;
    
            location /phpMyAdmin {
                        try_files $uri $uri/ =404;
            }
    
            ## Begin - PHP
            location ~ \.php$ {
            # Choose either a socket or TCP/IP address
            fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
            # fastcgi_pass unix:/var/run/php5-fpm.sock; #legacy
            # fastcgi_pass 127.0.0.1:9000;
    
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    
            }
    }
    

    Unter /var/www/phpMyAdmin liegt die phpMyAdmin-Installation. Die Domain heißt phpmyadmin.com

    falschp

    server {
            listen 80;
            #listen [::]:80;
    
            root /var/www/falschp;
    
            index index.html index.htm index.php;
    
            server_name falschparker.com;
    
            location /falschp {
                        try_files $uri $uri/ =404;
            }
    
             
            ## Begin - PHP
            location ~ \.php$ {
            # Choose either a socket or TCP/IP address
            fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
            # fastcgi_pass unix:/var/run/php5-fpm.sock; #legacy
            # fastcgi_pass 127.0.0.1:9000;
    
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    
            }
    }
    

    Unter /var/www/falschp liegt das PHP-Projekt. Die Domain heißt falschparker.com

    Aktivieren

    sudo ln -s /etc/nginx/sites-available/phpmyadmin /etc/nginx/sites-enabled/
    sudo ln -s /etc/nginx/sites-available/falschp /etc/nginx/sites-enabled/
    

    Nun sind diese beiden Konfigurationen aktiv. Doch ein Aufruf der IP des ROCKPro64 würde uns jetzt immer zu dem Default-Server verbinden. Das ist in unserem Beispiel die phpMyAdmin-Installation.

    Nun um den anderen Dienst zu erreichen brauchen wir einen kleinen Trick. Wir weisen unseren Rechner an, die Domain nicht per DNS-Server aufzulösen, sondern wir weisen unserem Rechner an genau dort zu suchen, wo wir den Dienst angelegt haben. Hört sich kompliziert an, ist aber easy.

    Auf Eurem Haupt-PC, die Datei /etc/hosts öffnen

    127.0.0.1       localhost
    127.0.1.1       frank-MS-7A34
    192.168.3.206   phpmyadmin.com
    192.168.3.206   falschparker.com
    

    Die beiden Domains ergänzen und die Datei speichern. Danach könnt Ihr eich mit dem Aufruf der Domains zu den beiden Anwendungen verbinden. Fertig! 🙂

    Der Default-Server ist auch direkt über die IP-Adresse erreichbar.

    Anmerkungen

    Meine beiden Domainnamen sind nicht besonders clever, wenn es so einen Dienst im Internet gibt, könnte ich ihn nicht mehr erreichen. Besser wäre so was wie app1.com, app2.com usw. Hmm !?!?

    Und jetzt wie immer folgender Hinweis!

    Diese Anleitung bitte nicht in produktiven Umgebungen benutzen.

    Da gehört sicherlich noch viel mehr in die Konfigurationsdateien!

    Tipp

    Die meisten guten Anwendungen im Netz (nodebb, joomla, wordpress usw.) habe alle gute Dokumentationen wo man Beispiel Konfigurationen findet. Benutzt bitte NUR diese!

  • AI Bots aussperren

    Linux linux block-ai nginx
    2
    0 Stimmen
    2 Beiträge
    212 Aufrufe
    FrankMF
    Wir können das noch für eine sanfte Methode erweitern, das ist die Datei robots.txt, wo man sich in alten Zeiten mal dran hielt. Einige Bots machen das, andere nicht. Praktisch, das o.g. Projekt bietet diese Datei auch an. Dann werden wir das kurz mal mit einbauen. ai-block.sh #!/bin/bash # Script um AI-Bots zu blocken # https://github.com/ai-robots-txt/ai.robots.txt/tree/main mkdir /root/AI-test cd /root/AI-test ## Daten holen curl -O https://raw.githubusercontent.com/ai-robots-txt/ai.robots.txt/master/nginx-block-ai-bots.conf curl -O https://raw.githubusercontent.com/ai-robots-txt/ai.robots.txt/master/robots.txt ## Daten in nginx einbauen mv nginx-block-ai-bots.conf /etc/nginx/blocklists/ mv robots.txt /var/www/html ## NGINX neustarten systemctl restart nginx.service Damit das in nginx funktioniert. Den Server Block um folgendes erweitern. # Serve robots.txt directly from Nginx location = /robots.txt { root /var/www/html; try_files $uri =404; } Kurzer Test https://<DOMAIN>/robots.txt Ergebnis User-agent: AI2Bot User-agent: Ai2Bot-Dolma User-agent: Amazonbot User-agent: anthropic-ai User-agent: Applebot User-agent: Applebot-Extended User-agent: Brightbot 1.0 User-agent: Bytespider User-agent: CCBot User-agent: ChatGPT-User User-agent: Claude-Web User-agent: ClaudeBot User-agent: cohere-ai User-agent: cohere-training-data-crawler User-agent: Crawlspace User-agent: Diffbot User-agent: DuckAssistBot User-agent: FacebookBot User-agent: FriendlyCrawler User-agent: Google-Extended User-agent: GoogleOther User-agent: GoogleOther-Image User-agent: GoogleOther-Video User-agent: GPTBot User-agent: iaskspider/2.0 User-agent: ICC-Crawler User-agent: ImagesiftBot User-agent: img2dataset User-agent: imgproxy User-agent: ISSCyberRiskCrawler User-agent: Kangaroo Bot User-agent: Meta-ExternalAgent User-agent: Meta-ExternalFetcher User-agent: OAI-SearchBot User-agent: omgili User-agent: omgilibot User-agent: PanguBot User-agent: Perplexity-User User-agent: PerplexityBot User-agent: PetalBot User-agent: Scrapy User-agent: SemrushBot-OCOB User-agent: SemrushBot-SWA User-agent: Sidetrade indexer bot User-agent: Timpibot User-agent: VelenPublicWebCrawler User-agent: Webzio-Extended User-agent: YouBot Disallow: /
  • Nextcloud - Upgrade Hub 9 (30.0.0)

    Nextcloud nextcloud linux
    3
    2
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    FrankMF
    Ich habe dann mal weitergesucht, dank ein paar Tipps aus dem Fediverse, sehe ich jetzt was heller https://chaos.social/@towo/113152384137718991 Nachdem ich dann ein paar Apps gefunden und installiert hatte AppAPI Flow tauchte dann im Benutzermenü, rechts oben, folgendes auf. [image: 1726992766346-bildschirmfoto_20240922_101125.png] Das Interessante ist der Menüpunkt Externe Apps. Nun sollte ich diese Funktion verstanden haben. Das Nextcloud Team integriert also diese Windmill App via Docker Container und greift dann darauf zu. In der Videopräsentation war doch von in Nextcloud integriert die Werbeansprache!? Ein Docker Container ist für mich keine Integration. Ich habe einige rudimentäre Kenntnisse von Docker, ausschließlich lokal. Aber, ich komme nicht auf die Idee das auf einem produktiven Server zu installieren. Somit kann ich das Testen hier beenden und die Apps alle wieder deinstallieren. Jetzt habe ich noch im Kopf, ob man das mal mit einem Nextcloud-AIO testen soll? Natürlich auf einem Testsystem. https://github.com/nextcloud/all-in-one?tab=readme-ov-file#how-to-use-this
  • Firefox mit .deb Paket

    Linux debian firefox linux
    3
    2
    0 Stimmen
    3 Beiträge
    224 Aufrufe
    FrankMF
    Wer auch wie ich das Problem hat, das manche Webseiten keinen Text mehr anzeigen. Ich habe da was gefunden. https://neilzone.co.uk/2023/04/flatpak-firefox-112-not-showing-some-bitmap-fonts-in-debian
  • Debian Bookworm 12 - Btrfs Installation

    Linux debian bookworm linux
    3
    1
    0 Stimmen
    3 Beiträge
    2k Aufrufe
    FrankMF
    Das mit den Namen der btrfs Subvolumes ist bekannt bei Timeshift. Im Readme steht dazu folgendes. BTRFS volumes BTRFS volumes must have an Ubuntu-type layout with @ and @home subvolumes. Other layouts are not supported. Systems having the @ subvolume and having /home on a non-BTRFS partition are also supported. Text file busy / btrfs returned an error: 256 / Failed to create snapshot can occur if you have a Linux swapfile mounted within the @ or @home subvolumes which prevents snapshot from succeeding. Relocate the swapfile out of @ or *@home, for example into it's own subvolume like @swap.
  • ZFS - One Disk Pool -> Mirror Pool

    Linux linux zfs
    1
    0 Stimmen
    1 Beiträge
    207 Aufrufe
    Niemand hat geantwortet
  • Debian 11 Bullseye released!

    Linux debian linux
    4
    0 Stimmen
    4 Beiträge
    379 Aufrufe
    FrankMF
    Mein Systemadmin auf der Arbeit meinte heute, angesprochen auf das Problem, läuft der Network-Manager? Ok, gute Frage...... Schauen wir mal. Ich bin mir leider nicht 100% sicher, ob er vor meinem Eingreifen lief, ich denke aber schon. Warum ich unsicher bin? root@debian:~# systemctl enable systemd-networkd.service Created symlink /etc/systemd/system/dbus-org.freedesktop.network1.service → /lib/systemd/system/systemd-networkd.service. Created symlink /etc/systemd/system/multi-user.target.wants/systemd-networkd.service → /lib/systemd/system/systemd-networkd.service. Created symlink /etc/systemd/system/sockets.target.wants/systemd-networkd.socket → /lib/systemd/system/systemd-networkd.socket. Created symlink /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service → /lib/systemd/system/systemd-networkd-wait-online.service. Ok, danach root@debian:~# systemctl start systemd-networkd.service root@debian:~# systemctl status systemd-networkd.service ● systemd-networkd.service - Network Service Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; ven> Active: active (running) since Tue 2021-08-17 17:36:38 CEST; 6s ago TriggeredBy: ● systemd-networkd.socket Docs: man:systemd-networkd.service(8) Main PID: 1288 (systemd-network) Status: "Processing requests..." Tasks: 1 (limit: 19087) Memory: 3.9M CPU: 39ms CGroup: /system.slice/systemd-networkd.service └─1288 /lib/systemd/systemd-networkd Aug 17 17:36:38 debian systemd[1]: Starting Network Service... Aug 17 17:36:38 debian systemd-networkd[1288]: enp25s0: Gained IPv6LL Aug 17 17:36:38 debian systemd-networkd[1288]: Enumeration completed Aug 17 17:36:38 debian systemd[1]: Started Network Service. Danach ging immer noch nix. root@debian:/etc/network# ^C root@debian:/etc/network# nmcli device show GENERAL.DEVICE: wlx7cdd907cbec2 GENERAL.TYPE: wifi GENERAL.HWADDR: BA:59:C0:76:C7:F5 GENERAL.MTU: 1500 GENERAL.STATE: 20 (nicht verfügbar) GENERAL.CONNECTION: -- GENERAL.CON-PATH: -- GENERAL.DEVICE: enp25s0 GENERAL.TYPE: ethernet GENERAL.HWADDR: 30:9C:23:60:C6:8E GENERAL.MTU: 1500 GENERAL.STATE: 10 (nicht verwaltet) GENERAL.CONNECTION: -- GENERAL.CON-PATH: -- WIRED-PROPERTIES.CARRIER: an IP4.ADDRESS[1]: 192.168.3.169/24 IP4.GATEWAY: 192.168.3.1 IP4.ROUTE[1]: dst = 192.168.3.0/24, nh = 0.0.0.0, mt = 0 IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.3.1, mt = 0 IP6.ADDRESS[1]: 2a02:908:1260:13bc:329c:23ff:xxxx:xxxx/64 IP6.ADDRESS[2]: fd8a:6ff:2880:0:329c:23ff:fe60:c68e/64 IP6.ADDRESS[3]: fe80::329c:23ff:fe60:c68e/64 IP6.GATEWAY: fe80::e4d3:f0ff:fe8f:2354 IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 256 IP6.ROUTE[2]: dst = ::/0, nh = fe80::e4d3:f0ff:fe8f:2354, mt = 1024 IP6.ROUTE[3]: dst = 2a02:908:xxxx:xxxx::/64, nh = ::, mt = 256 IP6.ROUTE[4]: dst = fd8a:6ff:2880::/64, nh = ::, mt = 256 Jetzt hatte ich das erste Mal einen Ansatz, wonach ich suchen musste. GENERAL.STATE: 10 (nicht verwaltet) Etwas Suche im Netz und dann das nano /etc/NetworkManager/NetworkManager.conf Inhalt der Datei [main] plugins=ifupdown,keyfile [ifupdown] managed=false Das false in true geändert. Danach ein systemctl restart NetworkManager und ich konnte den Network-Manager auf dem Desktop benutzen!?!?!? [image: 1629216580219-bildschirmfoto-vom-2021-08-17-18-07-25.png] Irgendwas ist da durcheinander im Bullseye
  • Kopia - Administrative Aufgaben

    Kopia kopia linux
    1
    0 Stimmen
    1 Beiträge
    307 Aufrufe
    Niemand hat geantwortet
  • Wireguard - Client installieren

    Wireguard linux wireguard
    3
    0 Stimmen
    3 Beiträge
    848 Aufrufe
    FrankMF
    Ich kann dir nicht ganz folgen. Mein Wireguard Server ist eine VM im Netz. Mein Smartphone baut zu diesem eine Verbindung auf und ich habe mal eben nachgeschaut, was da so geht. Mein Smartphone ist aktuell im meinem WLan angemeldet. [image: 1586458461693-6e0016dc-7e11-41e1-bba2-e52a3f1348df-image-resized.png] iperf3 -s -B 10.10.1.1 ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- Accepted connection from 10.10.1.10, port 44246 [ 5] local 10.10.1.1 port 5201 connected to 10.10.1.10 port 44248 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 4.98 MBytes 41.7 Mbits/sec [ 5] 1.00-2.00 sec 5.52 MBytes 46.3 Mbits/sec [ 5] 2.00-3.00 sec 4.80 MBytes 40.3 Mbits/sec [ 5] 3.00-4.00 sec 4.17 MBytes 35.0 Mbits/sec [ 5] 4.00-5.00 sec 5.04 MBytes 42.3 Mbits/sec [ 5] 5.00-6.00 sec 5.43 MBytes 45.6 Mbits/sec [ 5] 6.00-7.00 sec 5.75 MBytes 48.3 Mbits/sec [ 5] 7.00-8.00 sec 5.70 MBytes 47.8 Mbits/sec [ 5] 8.00-9.00 sec 5.73 MBytes 48.1 Mbits/sec [ 5] 9.00-10.00 sec 5.65 MBytes 47.4 Mbits/sec [ 5] 10.00-10.04 sec 206 KBytes 46.5 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 5] 0.00-10.04 sec 53.0 MBytes 44.3 Mbits/sec receiver ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- Accepted connection from 10.10.1.10, port 44250 [ 5] local 10.10.1.1 port 5201 connected to 10.10.1.10 port 44252 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 4.80 MBytes 40.2 Mbits/sec 0 253 KBytes [ 5] 1.00-2.00 sec 14.7 MBytes 123 Mbits/sec 181 379 KBytes [ 5] 2.00-3.00 sec 9.68 MBytes 81.2 Mbits/sec 58 294 KBytes [ 5] 3.00-4.00 sec 8.88 MBytes 74.5 Mbits/sec 1 227 KBytes [ 5] 4.00-5.00 sec 7.76 MBytes 65.1 Mbits/sec 0 245 KBytes [ 5] 5.00-6.00 sec 8.88 MBytes 74.5 Mbits/sec 0 266 KBytes [ 5] 6.00-7.00 sec 9.81 MBytes 82.3 Mbits/sec 0 289 KBytes [ 5] 7.00-8.00 sec 7.82 MBytes 65.6 Mbits/sec 35 235 KBytes [ 5] 8.00-9.00 sec 5.59 MBytes 46.9 Mbits/sec 4 186 KBytes [ 5] 9.00-10.00 sec 6.64 MBytes 55.7 Mbits/sec 0 207 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.04 sec 84.6 MBytes 70.6 Mbits/sec 279 sender ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- ^Ciperf3: interrupt - the server has terminated Im zweiten Teil ist der Wireguard Server der Sender. Bis jetzt hatte ich eigentlich nie Probleme, auch nicht unterwegs. Aber, ich gehe davon aus, das ich dich nicht 100% verstanden habe