2013-06-06 5 views
1

Моя проблема в следующем: я использую Wordpress на Nginx с «хорошими ссылками». Я также запускаю 2 других сервиса на портах 88 и 1234, и я хочу сделать subdomains bugss.mydomain и mail.mydomain. Я сделал proxypass на месте /, но он работает только для основного каталога, что-то, что после домена/попадает в механизм Wordpress «pretty links». Вы не знаете, как это решить? Мои файлы конфигурации ниже: Сервер конфигурации:Nginx proxy_pass на другой порт с Wordpress

server { 
    listen <IP>:80; 

    root /usr/share/nginx/www/domain; 
    index index.html index.htm index.php; 

    server_name domain www.domain; 

    location/{ 
      try_files $uri $uri/ /index.html; 
      if ($host ~ "bugs.domain") { 
       proxy_pass http://domain:88; 
      } 

      if ($host ~ "mail.domain") { 
       proxy_pass http://domain:1234; 
      } 
    } 

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

    location ~ \.php$ { 
      try_files $uri =404; 
      fastcgi_split_path_info ^(.+\.php)(/.+)$; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_index index.php; 
      include fastcgi_params; 
    } 

    location ~ /\.ht { 
      deny all; 
    } 

    include /home/domain/public_html/nginx.conf; 
    } 

конфиг для указанного домена (с Wordpress):

#First there is many rewrites for the W3TC plugin, like minification, caches etc 
if ($host ~* ^www\.(.*)) 
{ 
    set $host_without_www $1; 
    rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent; 
} 
# 
# unless the request is for a valid file, send to bootstrap 
if (!-e $request_filename) 
{ 
    rewrite ^(.+)$ /index.php?q=$1 last; 
} 

Теперь, когда я вхожу домен: 88 или домен: 1234 он работает. Когда я вхожу в bugs.domain, сайт загружается, но CSS или изображения не работают, поскольку URL-адрес - bugs.domain/somapath, и это относится к начальной загрузке Wordpress. У меня заканчиваются идеи.

ответ

3

зачем создавать только один сервер с, если в нем, отдельные серверы

server { 
    listen 80; 
    server_name bugs.example.com; 
    proxy_pass http://example.com:88; 
} 
server { 
    listen 80; 
    server_name mail.example.com; 
    proxy_pass http://example.com:1234; 
} 
server { 
    listen 80; 
    # the rest of your main server 
    # 
} 
+0

Это, наверное, хорошее решение, спасибо! Однако я только что нашел, что было настоящей проблемой, я отправлю его через несколько минут – Mat

+0

просто имейте в виду http://wiki.nginx.org/IfIsEvil –

+1

Я не думаю, что вы хотели иметь двоеточия в своих директивах? «server_name bugs.example.com» не «имя_сервера: bugs.example.com» –

1

Таким образом, проблема была совершенно иной, то я думал. он терпел неудачу на этой линии:

try_files $uri $uri/ /index.html; 

Проблема заключалась в том, что файл index.html не существует, у меня было только index.php. Его изменение решило проблему.

+0

Я думаю, что неплохо поставить 'try_files' перед' if', логичнее поставить if-first –