Puncte:0

dockerized nginx try_files determină dockerizat adresa URL wordpress (cu excepția /wp-admin) la 500 Eroare internă de server sau redirecționare automată către domeniul rădăcină

drapel cn

Am configurat cu succes un site wordpress care rulează pe un nginx dockerizat. Când site-ul wordpress este în funcțiune, pot merge la pagina de pornire: https://domeniul_meu.com sau orice link-uri sau după wp-admin/... fără nici o problemă.

Dar când merg la https://domeniul_meu.com/sample-page sau https://domeniul_meu.com/post-id sau orice rută cu excepția după \wp-admin atunci:

redirecționează imediat către domeniul rădăcină http://domeniul_meu.com daca am setat:

try_files $uri $uri/ /index.php$is_args$args;

sau nu redirecționați automat către domeniul rădăcină, ci reveniți 500 Eroare internă a server-ului dacă am setat (adăugați un / după index.php):

try_files $uri $uri/ /index.php/$is_args$args;

cu excepția rutei /wp-admin/ când este accesat redirecționează corect către https://my_domain.com/wp-admin/login.php dacă nu te-ai autentificat și la https://domeniul_meu.com/wp-admin/ dacă sunteți autentificat, în toate cele 2 cazuri de try_files de mai sus.

Iată configurația mea nginx la /nginx/default.conf:

Server {
    asculta 80;
    asculta [::]:80;
    nume_server domeniul_meu.com www.domeniul_meu.com;

    Locație / {
        returnează 301 https://my_domain.com$request_uri;
    }
}


Server {
    asculta 443 ssl http2;
    asculta [::]:443 ssl http2;
    nume_server domeniul_meu.com www.domeniul_meu.com;

    index index.php index.html index.htm;

    rădăcină /var/www/html/wordpress;

    ssl activat;
    server_tokens dezactivat;
    ssl_certificate /etc/nginx/ssl/live/my_domain.com/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/live/my_domain.com/privkey.pem;
    ssl_dhparam /etc/nginx/dhparam/dhparam-2048.pem;

    ssl_buffer_size 8k;
    ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
    ssl_prefer_server_ciphers activat;
    ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

    add_header X-Frame-Options „SAMEORIGIN” întotdeauna;
    add_header X-XSS-Protection „1; mod=bloc” întotdeauna;
    add_header X-Content-Type-Options „nosniff” întotdeauna;
    add_header Politica de referință „no-referrer-when-downgrade” întotdeauna;
    add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" întotdeauna;
    # add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" întotdeauna;
    # activați securitatea strictă a transportului numai dacă înțelegeți implicațiile


    Locație / {
          try_files $uri $uri/ /index.php$is_args$args;

          proxy_pass http://wordpress_host:80; 
          proxy_set_header Gazdă $http_host;
          proxy_set_header X-Forwarded-Proto $schema;
    }

    locație ~ \.php$ {
          try_files $uri =404;
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          proxy_pass http://wordpress_host:80;
          fastcgi_index index.php;
          include fastcgi_params;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_param PATH_INFO $fastcgi_path_info;

          proxy_set_header Gazdă $http_host;
          proxy_set_header X-Forwarded-Proto $schema;
    }

    locație ~ /\.ht {
          nega totul;
    }
        
    locație = /favicon.ico { 
          log_not_found off; access_log off; 
    }

    locație = /robots.txt { 
          log_not_found off; access_log off; permite tuturor; 
    }

    locație ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
          expira max;
          log_not_found off;
    }
}

Configurez și la wp-config.php:

define('FORCE_SSL_ADMIN', true); 

if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') 
$_SERVER['HTTPS']='activat';

define('WP_SITEURL', 'https://www.my_domain.com/');
define('WP_HOME', 'https://www.my_domain.com/');

Actualizați:

Aici fișierul de compunere docker:

versiunea: '3';
Servicii:
  nginx:
    imagine: nginx:stable-alpine
    porturi:
      - „80:80” # nginx ascultă pe 80
      - „443:443”
    volume:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
      - ./wordpress/app:/var/www/html/wordpress
  db:
    imagine: mysql:8.0
    container_name: db-example
    reporniți: dacă nu este oprit
    fișier_env: ./wordpress/app/.env
    mediu inconjurator:
      - MYSQL_DATABASE=exemplu
    volume:
      - ./wordpress/dbdata:/var/lib/mysql
      #- ./wordpress/db/db.sql:/docker-entrypoint-initdb.d/install_wordpress.sql #dacă aveți db.sql de intrare pentru proiect aici
    comandă: „--default-authentication-plugin=mysql_native_password”

  wordpress_host:
    depinde de:
      - db
    imagine: wordpress
    container_name: wordpress_host
    porturi:
      - „8080:80”
    reporniți: dacă nu este oprit
    fișier_env: ./wordpress/app/.env
    mediu inconjurator:
      - WORDPRESS_DB_HOST=db:3306
      - WORDPRESS_DB_USER=rădăcină
      - WORDPRESS_DB_PASSWORD=rădăcină
      - WORDPRESS_DB_NAME=exemplu
    volume:
      - ./wordpress/app:/var/www/html/wordpress
volume:
  wordpress-host:
  dbdata

: fișier .env:

MYSQL_ROOT_PASSWORD=rădăcină
MYSQL_USER=exemplu
MYSQL_PASSWORD=parolă
Zeitounator avatar
drapel fr
Dacă intenționați să utilizați cgi rapid, utilizați o imagine wordpress greșită.Uită-te la etichetele `*-fpm`. Configurația dvs. actuală redirecționează apelurile din configurația dvs. nginx către serverul Apache care rulează în imaginea „wordpress:latest”. Sunt destul de sigur că problema ta vine de acolo.

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.