2

私はサイトをApacheからNginxに移行するプロセスをいじくり回してきましたが、気が狂いそうです。仮想ホストは静的リソース(css、jsなど)を提供することを望んでおらず、その理由を理解できないようです。サーバーブロックは次のようになります。

server {
  listen      443 default_server ssl;
  server_name dev.myproject.mydomain.net;
  root        /opt/dev/myproject;
  index       index.php;

  ssl_certificate      /etc/ssl/certs/server.crt;
  ssl_certificate_key  /etc/ssl/certs/server.pem;

  access_log /var/log/nginx/vh.project.dev.access.log;
  error_log  /var/log/nginx/vh.project.dev.error.log;

  location ~ ^/alias_name/(.*) {
    alias /opt/dev/myproject/www/$1;

    location ~ ^/alias_name/(.+\.php)$ {
      alias /opt/dev/myprojectp/www/$1;
      include /etc/nginx/conf/php;
    }
  }

  location ~ \.php$ {
    include /etc/nginx/conf/php;
  }

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

私は何が欠けていますか?Nginxの経験が浅いことは承知していますが、現時点でアドバイスをいただければ幸いです。

ありがとう。

アップデート

これは、以前問題があった私のエイリアスに関連しているようです。ドキュメントルートをエイリアスの場所(/opt/dev/myprojectp/www)にポイントし、エイリアスなしで静的コンテンツをレンダリングしようとすると、正常にレンダリングされます。URLにエイリアスをスローするとすぐに...それほど多くはありません。

4

2 に答える 2

2

から取得:http://kbeezie.com/view/nginx-configuration-examples/

# This block will catch static file requests, such as images, css, js
# The ?: prefix is a 'non-capturing' mark, meaning we do not require
# the pattern to be captured into $1 which should help improve performance
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
    # Some basic cache-control for static files to be sent to the browser
    expires max;
    add_header Pragma public;
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
于 2012-08-17T18:48:39.283 に答える
1

さて、私は力ずくの試行錯誤によって自分の答えを見つけたかもしれません。この仮想ホストサーバーブロックは、PHP静的コンテンツを適切に提供しているようです。

server {
  listen      443 default_server ssl;
  server_name dev.myproject.mydomain.net;
  root        /opt/dev/project-root;
  index       index.php;

  ssl_certificate      /etc/ssl/certs/server.crt;
  ssl_certificate_key  /etc/ssl/certs/server.pem;

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

  location ~ ^/alias_name/(.+\.php)$ {
    alias /opt/dev/project-root/www/$1;
    include /etc/nginx/conf/php;
  }
  location ~ ^/alias_name/(.*) {
    alias /opt/dev/project-root/www/$1;
  }

  location ~ \.php$ {
    include /etc/nginx/conf/php;
  }
}

問題が発生するかどうかはわかりません。違いを完全に理解しているとは言えませんが、ネストされたlocationブロックを削除するだけでうまくいったようです。

于 2012-08-17T19:56:32.293 に答える