首页 > 解决方案 > Nginx 斜杠重定向 wp-admin - 可能是代理问题

问题描述

我正在为我的网站使用所有的roots.io 解决方案。https://roots.io/

我对 nginx 和 Varnish 有疑问。

按照这些说明https://www.linode.com/docs/guides/use-varnish-and-nginx-to-serve-wordpress-over-ssl-and-http-on-debian-8/我来构建这个.conf 文件

# Redirect to https
server {
  listen [::]:8080;
  listen 8080;
  server_name www.mysite.it spicy.mysite.it *.www.mysite.it *.spicy.mysite.it;
  port_in_redirect off;

  access_log   /srv/www/mysite.it/logs/access.log main;
  error_log    /srv/www/mysite.it/logs/error.log;

  root  /srv/www/mysite.it/current/web;
  index index.php index.htm index.html;
  add_header Fastcgi-Cache $upstream_cache_status;

  # Specify a charset
  charset utf-8;

  # Set the max body size equal to PHP's max POST size.
  client_max_body_size 500m;

  # https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#virtualbox
  sendfile off;
  location / {
    try_files $uri $uri/ /index.php?$args;
  }

  location ~ \.php$ {
    #try_files $uri /index.php;
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT $realpath_root;
    fastcgi_pass unix:/var/run/php-fpm-wordpress.sock;
  }
}

server {
  listen [::]:443 ssl http2;
  listen 443 ssl http2;
  server_name www.mysite.it spicy.mysite.it *.www.mysite.it *.spicy.mysite.it;
  port_in_redirect off;
  
  access_log   /srv/www/mysite.it/logs/ssl-access.log main;
  error_log    /srv/www/mysite.it/logs/ssl-error.log;
  
  # Multisite rewrites
  rewrite ^/(wp-.*.php)$ /wp/$1 last;
  rewrite ^/(wp-(content|admin|includes).*) /wp/$1 last;

  # SSL configuration
  include h5bp/directive-only/ssl.conf;
  include h5bp/directive-only/ssl-stapling.conf;
  ssl_dhparam /etc/nginx/ssl/dhparams.pem;
  ssl_buffer_size 1400; # 1400 bytes to fit in one MTU

  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; ";
  ssl_certificate         /etc/nginx/ssl/my_site.it.crt;
  ssl_certificate_key     /etc/nginx/ssl/my_site.it.key;

  include acme-challenge-location.conf;

  include includes.d/all/*.conf;
  include includes.d/mysite.it/*.conf;
  
  add_header X-Content-Type-Options nosniff;

  location / {
    proxy_pass http://127.0.0.1;
    proxy_set_header Host               $http_host;
    proxy_set_header X-Forwarded-Host   $http_host;
    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  https;
    proxy_set_header X-Forwarded-Port   443;
    proxy_buffer_size                   128k;
    proxy_buffers                       4 256k;
    proxy_busy_buffers_size             256k;
    fastcgi_buffer_size                 32k;
    fastcgi_buffers                     4 32k;
  }
  
  include h5bp/directive-only/extra-security.conf;
  include h5bp/directive-only/x-ua-compatible.conf;
  include h5bp/location/cross-domain-fonts.conf;
  include h5bp/location/protect-system-files.conf;
  
  add_header Content-Security-Policy "frame-ancestors 'self'" always;

  # Conditional X-Frame-Options until https://core.trac.wordpress.org/ticket/40020 is resolved
  set $x_frame_options SAMEORIGIN;
  if ($arg_customize_changeset_uuid) {
    set $x_frame_options "";
  }
  add_header X-Frame-Options $x_frame_options always;

  # Prevent search engines from indexing non-production environments
  add_header X-Robots-Tag "noindex, nofollow" always;
}

一切似乎都运行良好,甚至将 cloudflare 放在“清漆”前面。

唯一的问题似乎是来自 wp-admin 的重定向,没有斜杠。

有时候是这样的:

我访问https://www.mysite.it/wp/wp-admin

它将 301 重定向到http://www.mysite.it/wp/wp-admin:8080/wp/wp-admin/

它再次重定向 307 到https://www.mysite.it/wp/wp-admin:8080/wp/wp-admin/

有人能帮我吗?我不明白如何解决它

标签: wordpressnginxsslproxyvarnish

解决方案


推荐阅读