nginx перенаправление для URL-адресов без завершающего sla sh не работает в docker, если не используется порт по умолчанию 80 - PullRequest
1 голос
/ 07 мая 2020

Вот веб-сайт, основанный на gatsby .

При работе с -p 80:80 он доступен для http://localhost/docs/infrastructure/components, у которого нет конечного sla sh.

docker run -itd -p 80:80 --env-file env.list --name docs.kubesphere.io kubesphere/docs.kubesphere.io:v2.1

При работе с -p 81:80 недоступен для http://localhost: 81 / docs / Infrastructure / components . Браузер получил перенаправление на http://localhost/docs/infrastructure/components/, а не на http://localhost: 81 / docs / Infrastructure / components /.

docker run -itd -p 81:80 --env-file env.list --name docs.kubesphere.io kubesphere/docs.kubesphere.io:v2.1

error

nginx conf выглядит следующим образом:

daemon              off;
worker_processes    1;
user                root;

events {
  worker_connections 1024;
}

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

  keepalive_timeout  15;
  autoindex          off;
  server_tokens      off;
  port_in_redirect   off;
  sendfile           off;
  tcp_nopush         on;
  tcp_nodelay        on;

  client_max_body_size 64k;
  client_header_buffer_size 16k;
  large_client_header_buffers 4 16k;

  ## Cache open FD
  open_file_cache max=10000 inactive=3600s;
  open_file_cache_valid 7200s;
  open_file_cache_min_uses 2;

  ## Gzipping is an easy way to reduce page weight
  gzip                on;
  gzip_vary           on;
  gzip_proxied        any;
  gzip_types          application/javascript application/x-javascript application/rss+xml text/javascript text/css image/svg+xml;
  gzip_buffers        16 8k;
  gzip_comp_level     6;

  access_log         /dev/stdout;
  error_log          /dev/stderr error;

  server {
    listen 80;
    root /pub;

    index index.html;
    autoindex off;
    charset utf-8;

    error_page 404 /404.html;

    location ~* \.(html)$ {
      add_header Cache-Control "no-store";
      expires    off;
    }
    location ~* \.(ico|jpg|jpeg|png|gif|svg|js|jsx|css|less|swf|eot|ttf|otf|woff|woff2)$ {
      add_header Cache-Control "public";
      expires +1y;
    }

    rewrite ^([^.]*[^/])$ $1/ permanent;

    try_files $uri $uri/ $uri/index.html =404;


  }
}

Без rewrite ^([^.]*[^/])$ $1/ permanent; браузер все еще может отображать 301 Moved Permanently (from disk cache), а затем добавить завершающий sla sh при использовании -p 80:80. При изменении на -p 81:81 обнаружено, что некоторые страницы могут получать 81 порт в заголовке ответа, а некоторые нет.
Мне интересно, почему браузер может получать ie 301 код состояния?
Отправлено по nginx?
Как я могу это проверить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...