![nginx: [emerg] директива "location" здесь не допускается](https://rvso.com/image/658822/nginx%3A%20%5Bemerg%5D%20%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D0%B0%20%22location%22%20%D0%B7%D0%B4%D0%B5%D1%81%D1%8C%20%D0%BD%D0%B5%20%D0%B4%D0%BE%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D1%82%D1%81%D1%8F.png)
Страницы моей веб-панели требуют файл .htaccess, и поскольку я теперь использую Nginx, мне нужно преобразовать переписывание .htaccess для работы с Nginx. Я использовал онлайн-конвертерhttp://winginx.com/en/htaccessи он дал мне информацию о том, что нужно ввести, но я получаю сообщение об ошибке при перезапуске Nginx для сохранения изменений.
Оригинальная переписка .htaccess:
Options -Indexes
# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)(\.)(.*)$ index.php?url=$1.$3 [L,QSA]
RewriteRule ^ajax$ _res/ajax.php [QSA]
#RewriteRule ^(.*)$ index.php?t=$1 [L,QSA]
</IfModule>
Конверсия:
# nginx configuration
location = /favicon.ico {
}
autoindex off;
location / {
if (!-e $request_filename){
rewrite ^/(.*)(\.)(.*)$ /index.php?url=$1.$3 break;
}
}
location = /ajax {
rewrite ^(.*)$ /_res/ajax.php;
}
Файл конфигурации с кодом преобразования:
# redirect from non-www to www
# uncomment, save file and restart Nginx to enable
#server {
# listen 80;
# server_name domain.com;
# return 301 $scheme://www.domain.com$request_uri;
# }
server {
# Cloudflare
set_real_ip_from 199.27.128.0/21;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/12;
real_ip_header CF-Connecting-IP;
server_name domain.com www.domain.com;
# ngx_pagespeed & ngx_pagespeed handler
#include /usr/local/nginx/conf/pagespeed.conf;
#include /usr/local/nginx/conf/pagespeedhandler.conf;
#include /usr/local/nginx/conf/pagespeedstatslog.conf;
# limit_conn limit_per_ip 16;
# ssi on;
access_log /home/nginx/domains/domain.com/log/access.log combined buffer=32k;
error_log /home/nginx/domains/domain.com/log/error.log;
root /home/nginx/domains/domain.com/public;
location / {
# block common exploits, sql injections etc
#include /usr/local/nginx/conf/block.conf;
# Enables directory listings when index file not found
#autoindex on;
# Shows file listing times as local time
#autoindex_localtime on;
# Enable for vBulletin usage WITHOUT vbSEO installed
#try_files $uri $uri/ /index.php;
}
include /usr/local/nginx/conf/staticfiles.conf;
include /usr/local/nginx/conf/php.conf;
include /usr/local/nginx/conf/drop.conf;
#include /usr/local/nginx/conf/errorpage.conf;
}
# nginx configuration
location = /favicon.ico {
}
autoindex off;
location / {
if (!-e $request_filename){
rewrite ^/(.*)(\.)(.*)$ /index.php?url=$1.$3 break;
}
}
location = /ajax {
rewrite ^(.*)$ /_res/ajax.php;
}
Ошибка:
[root@radio ~]# nginx: [emerg] "location" directive is not allowed here in /usr/local/nginx/conf/conf.d/domain.com.conf:65
В общем, я не уверен, вставляю ли я код в нужное место или что. Но на данный момент я получаю эту ошибку, как показано выше.
Спасибо!
решение1
Ваши location
блоки не на своем месте. Они должны быть внутри server
блока.
Я рекомендую вам изучить конфигурацию nginx гораздо более внимательно, чтобы вы понимали всю концепцию. Иначе в будущем у вас будут только проблемы.