Простое перенаправление nginx не совпадает - PullRequest
0 голосов
/ 06 марта 2019

Первоначально я пытался сделать сложное переписывание URL, которое я не мог заставить работать, поэтому сократил его до простого перенаправления URL, которое определенно должно работать, вместо этого он выдает 404.

Запросы для [any_scheme]: //www.mydomain.com/google следует перенаправить на https://www.google.com/

nginx.conf (не публикуется, поскольку не содержит серверных блоков, поэтому не может конфликтовать?)

mydomain.com.conf:

server {
    server_name www.mydomain.com;
    root /home/mydomain/public_html;
    index index.php index.html index.htm;

    listen 80;
    listen [::]:80;
    listen 443 ssl;
    listen [::]:443 ssl;

    ssl_certificate /home/mydomain/ssl.combined;
    ssl_certificate_key /home/mydomain/ssl.key;

    access_log /var/log/virtualmin/mydomain.com_access_log;
    error_log /var/log/virtualmin/mydomain.com_error_log;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }

    location = /google {
        return 302 https://www.google.com/;
    }

    #rogue .htaccess files caught here
    location ~ /\.ht {
        deny all;
    }
}

#force non-www. to www.
server {
    server_name mydomain.com;
    listen 80;
    listen [::]:80;
    listen 443 ssl;
    listen [::]:443 ssl;
    return 301 $scheme://www.mydomain.com$request_uri;
}

Ответы [ 2 ]

0 голосов
/ 14 марта 2019
  • Используйте curl -v для отладки того, что происходит с вашим сервером.

  • Используете ли вы sites-available / sites-enabled? Не. См. https://serverfault.com/a/870709/110020. sites-available / sites-enabled нестандартный и злой, не используйте его, используйте вместо него conf.d.

  • Убедитесь, что вы действительно перезагрузили nginx. См. https://stackoverflow.com/a/21297545/1122270. Попробуйте sudo nginx -s reload и sudo pkill -HUP nginx напрямую.

  • Проверьте и error_log, и access_log. Убедитесь, что даты событий соответствуют новым запросам, которые вы делаете. Я бы порекомендовал открыть несколько окон терминала и сделать tail -f в каждом, а затем сделать несколько нажатий return , чтобы отделить новый ввод от старого, только затем выполнить запросы .

  • Используете ли вы какие-либо дополнительные прокси поверх nginx? Это может быть причиной проблемы.

0 голосов
/ 06 марта 2019

В зависимости от вашей записи в журнале: вы запрашиваете /google/ (обратите внимание на косую черту), но это не будет совпадать с местоположением /google, поскольку там нет косой черты.

Итак, вам нужно два точных совпадения местоположения:

location = /google {
    return 302 https://www.google.com/;
}

location = /google/ {
    return 302 https://www.google.com/;
}
...