LINUX.ORG.RU
ФорумAdmin

Nginx не видит дефолтный конфиг

 ,


0

2

Всем доброго времени суток. Народ есть такая проблема. Купил два VPS, полностью одинаково настроил конфиги, создано два виртуальных хоста, один под именем default, другой с именем домена, однако на одном VPS, при переходе по IP-адресу, открывается содержимое папки defult, а на другом при тех же настройках, открывается содержание папки с названием домена. Как такое может быть?

Вот содержимое конфига default:

# Не отдавать версию nginx в заголовке ответа
server_tokens off;

server {
	#listen   80; ## listen for ipv4; this line is default and implied
	#listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

	root /var/www/default;
	index index.html;
	
	access_log /var/www/default/log/access.log;
    error_log /var/www/default/log/error.log;

	# Make site accessible from http://localhost/
	server_name localhost;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ /index.php;
		# Uncomment to enable naxsi on this location
		# include /etc/nginx/naxsi.rules
	}

	location /doc/ {
		alias /usr/share/doc/;
		autoindex on;
		allow 127.0.0.1;
		allow ::1;
		deny all;
	}

	# Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
	#location /RequestDenied {
	#	proxy_pass http://127.0.0.1:8080;    
	#}

	#error_page 404 /404.html;

	# redirect server error pages to the static page /50x.html
	#
	#error_page 500 502 503 504 /50x.html;
	#location = /50x.html {
	#	root /usr/share/nginx/www;
	#}

	# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
	#
	location ~ \.php$ {
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
	#	# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
	#
	#	# With php5-cgi alone:
	#	fastcgi_pass 127.0.0.1:9000;
	#	# With php5-fpm:
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		include fastcgi_params;
	#}

	# deny access to .htaccess files, if Apache's document root
	# concurs with nginx's one
	#
	#location ~ /\.ht {
	#	deny all;
	#}
}
}

Это содержание конфига с названием домена site.ru

server {
	#listen   80; ## listen for ipv4; this line is default and implied
	#listen   [::]:80 default_server ipv6only=on; ## listen for ipv6                                                                                                                 

	root /var/www/site.ru;
	index index.php;
	
	access_log /var/www/site.ru/log/access.log;
    error_log /var/www/site.ru/log/error.log;

	# Make site accessible from http://localhost/
	server_name site.ru www.site.ru;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ /index.php;
		# Uncomment to enable naxsi on this location
		# include /etc/nginx/naxsi.rules
	}

	location /doc/ {
		alias /usr/share/doc/;
		autoindex on;
		allow 127.0.0.1;
		allow ::1;
		deny all;
	}

	# Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
	#location /RequestDenied {
	#	proxy_pass http://127.0.0.1:8080;    
	#}

	#error_page 404 /404.html;

	# redirect server error pages to the static page /50x.html
	#
	#error_page 500 502 503 504 /50x.html;
	#location = /50x.html {
	#	root /usr/share/nginx/www;
	#}

	# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
	#
	location ~ \.php$ {
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
	#	# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
	#
	#	# With php5-cgi alone:
	#	fastcgi_pass 127.0.0.1:9000;
	#	# With php5-fpm:
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		include fastcgi_params;
	#}

	# deny access to .htaccess files, if Apache's document root
	# concurs with nginx's one
	#
	#location ~ /\.ht {
	#	deny all;
	#}
}
}

Еще не пойму, почему происходит редирект с www на без www. Я ведь его не указывал... Пробовал симлинки удалять и заново создавать - безрезультатно.

Вот содержание глобального конфига:

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;
	gzip_disable "msie6";

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# nginx-naxsi config
	##
	# Uncomment it if you installed nginx-naxsi
	##

	#include /etc/nginx/naxsi_core.rules;

	##
	# nginx-passenger config
	##
	# Uncomment it if you installed nginx-passenger
	##
	
	#passenger_root /usr;
	#passenger_ruby /usr/bin/ruby;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}


#mail {
#	# See sample authentication script at:
#	# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#	# auth_http localhost/auth.php;
#	# pop3_capabilities "TOP" "USER";
#	# imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#	server {
#		listen     localhost:110;
#		protocol   pop3;
#		proxy      on;
#	}
# 
#	server {
#		listen     localhost:143;
#		protocol   imap;
#		proxy      on;
#	}
#}

Самое главное на двух VPS все одинаково настроено, но сайты ведут себя по разному. Задача была следующая, сделать редирект с www на без www. А при переходе по ip-адресу должна была показываться заглушка, которая находилась бы в папке default. Может кто знает, почему такое может быть при одинаковых конфигах?

Ответ на: комментарий от Deleted

Дай тебе бог здоровья) За теги извиняюсь - учту в следующий раз. Самое главное, хотел попробовать этот вариант, но подумал, это слишком легкое решение, а оказывается помогло. Кстати работает, даже если только указать:

listen 80 default_server;
А не знаешь, почему еще редирект срабатывает? Я ведь в конфиге условий для редиректа не указывал. А он срабатывает при условии, что я просто прописал алиас сайта http://www.site.ru

resotars ()

Задача была следующая, сделать редирект с www на без www

Просто в DNS сделай запись. Заглушку сделай в виде отдельного хоста. Вот сходу тебе пример:

server {
	listen      80;
	server_name ip;
	root      /var/www/default;
        index index.html;
        access_log /var/log/nginx/default.log;
А лучше сразу 444 выдавай, и записывай ботов в лог. Пользователи по ip на сайт все равно не ходят. Конфиг твой даже не читал, так что извиняй.

anonymous_sama ★★★★★ ()
Ответ на: комментарий от Deleted

Помогло, правда теперь при переходе по адресу http://www.site.ru отображается содержание папки default, а по идее должно быть содержание папки site.ru, так как алиас в конфиге то прописан, ведь так?

resotars ()
Ответ на: комментарий от anonymous_sama

Точно, DNS! Как я мог забыть, что их еще полгода назад настраивал с редиректом. А я то целый вечер сегодня думаю, почему у меня редирект идет без видимых на то условий в конфиге. anonymous_sama и Isset - спасибо вам большое, очень выручили.

resotars ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.