Задать вопрос

Nginx 1.0.3 — как настроить ТОЛЬКО для отдачи статики?

Не получается настроить Nginx 1.0.3 — стоит подключить его, тут же игнорируются .htaccess файлы, и по другим признакам похоже, что он сам обрабатывает php-файлы, не отдавая их апачу.

Конфиг взяла от рабочего 0.8 с другого VPS, там все работает как нужно. Конфиг создавался автоматически панелькой ISPManager — я из него только повыкидывала лишние хосты, поменяла путь к логу и поменяла IP.

CentOS 5.4, Nginx установлен из CentALT.

Вот конфиг:

user  nginx;
worker_processes  2;
worker_rlimit_nofile 100000;

error_log   /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
    use epoll;
}


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

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
    server_tokens   off;
    gzip            on;
    gzip_static     on;
    gzip_comp_level 5;
    gzip_min_length 1024;
    keepalive_timeout  65;
    limit_zone   myzone  $binary_remote_addr  10m;

    # Load config files from the /etc/nginx/conf.d directory
    include /etc/nginx/conf.d/*.conf;



    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;

    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_timeout  5m;

    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    #    ssl_prefer_server_ciphers   on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

	client_max_body_size 16m;
	log_format  isp '$bytes_sent $request_length';
	
	server {
		listen 50.57.78.248:80;
		server_name dogstudio.su dog-studio.org *.dog-studio.org *.dogstudio.su www.dog-studio.org www.dogstudio.su;
		rewrite	^(/manager/.*)$	https://$host$1	permanent;
		rewrite ^(/manager/.*)$	https://$host$1	permanent;
		error_page 404 = @fallback;
		location ~* ^/(webstat/|awstats|webmail/|myadmin/|manimg/) {
			proxy_pass http://50.57.78.248:8080;
			proxy_redirect http://dogstudio.su:8080/ /;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-IP $remote_addr;
		}
		location / {
			proxy_pass http://50.57.78.248:8080;
			proxy_redirect http://dogstudio.su:8080/ /;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-IP $remote_addr;
		}
		location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
			set $proot "/home/dogstudio/public_html/dogstudio.su/public";
			if ( $host = "dog-studio.org" ) {
				break;
			}
			if ( $host = "dogstudio.su" ) {
				break;
			}
			if ( $host = "www.dog-studio.org" ) {
				break;
			}
			if ( $host = "www.dogstudio.su" ) {
				break;
			}
			if ( $host ~* ^((.*).dog-studio.org)$ ) {
				set $proot /home/dogstudio/public_html/$1/public;
				break;
			}
			if ( $host ~* ^((.*).dogstudio.su)$ ) {
				set $proot /home/dogstudio/public_html/$1/public;
				break;
			}
			access_log /home/dogstudio/public_html/dogstudio.su/log/access.nginx.log;
			root $proot;
		}
		location @fallback {
			proxy_pass http://50.57.78.248:8080;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-IP $remote_addr;
		}
	}
}


Что неправильно?

Там сайт на HostCMS (dogstudio.su), если прописываю апачу порт 80 и отключаю nginx — отображается нормально; если прописываю апачу 8080 и запускаю nginx — выдает ошибку CMS «Не найден лицензионный ключ». Этот же сайт с этим же конфигом на другом VPS (dog-studio.org) — работает как надо с включенным nginx'ом.
  • Вопрос задан
  • 8020 просмотров
Подписаться 9 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@whiteglasses
nginx не использует файлы .htaccess. Только свои конфиги.

Можно поподробнее про «и по другим признакам похоже, что он сам обрабатывает php-файлы, не отдавая их апач»у
Ответ написан
crea7or
@crea7or
Ошибка то похоже у cms ибо сам nginx не умеет обрабатывать php. У меня nginx именно так и настроен, он отдаёт только статику, а php жуёт апач.

А вообще предлагаю запустить апач на localhost'е и поменять:
location / {
			proxy_pass http://50.57.78.248:8080;
			proxy_redirect http://dogstudio.su:8080/ /;


на

location / {
			proxy_pass         http://127.0.0.1/;
			proxy_redirect     off;

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы