Ubuntu 12.04 x64,DigitalOcean。 我已经安装了nginx + Apache + PHP,但静态内容没有加载,网址坏了。
你可以看到,所有网址中都设置了proxy_pass。如果我关闭nginx并更改端口Apache工作正常。
/etc/nginx/nginx.conf
user www-data;
worker_processes 1;
pid /var/run/nginx.pid;
error_log /home/project/logs/nginx.error.log;
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 7; #Level Compress
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascri$
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
/etc/nginx/sites-enabled/project.ru
upstream project {
server 127.0.0.1:81;
}
server {
listen 80;
error_page 404 /404.html;
error_page 403 /403.html;
server_name project.ru www.project.ru;
access_log /home/project/logs/nginx.access.log;
error_log /home/project/logs/nginx.error.log;
location / {
proxy_pass http://project;
}
location ~* .(jpg|jpeg|gif|png|ico|css|bmp|swf|js|mov|avi|mp4|mpeg4) {
root /home/project/www;
}
location ~ /.ht {
deny all;
}
}
答案 0 :(得分:0)
使用location / {}
,您将所有请求传递给上游。移动其他位置块或执行以下操作:
location / {
root /home/project/www;
try_files $uri @dynamic;
}
location @dynamic {
proxy_pass http://project;
}
try_files 按顺序检查文件是否存在,并返回找到的第一个文件。尾部斜杠表示目录 - $ uri /。如果未找到任何文件,则会调用到最后一个参数的内部重定向。请注意,只有最后一个参数会导致内部重定向,以前的参数只会设置内部URI指针。最后一个参数是回退URI,必须存在,否则将引发内部错误。可以使用命名位置。与重写不同,如果回退不是命名位置,则不会自动保留$ args。如果您需要保留args,则必须明确地执行此操作。