Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos TOMCAT前面的NGINX提供静态文件_Macos_Tomcat_Grails_Nginx - Fatal编程技术网

Macos TOMCAT前面的NGINX提供静态文件

Macos TOMCAT前面的NGINX提供静态文件,macos,tomcat,grails,nginx,Macos,Tomcat,Grails,Nginx,我正在本地机器上使用grails 2.2.2进行一个项目Mac OSX Lion 10.7.5我已经用brew安装了NGINX,并修改了NGINX.conf,如下所示: worker_processes 1; error_log logs/error.log info; events { worker_connections 1024; } http { include mime.types; default_type application/

我正在本地机器上使用
grails 2.2.2
进行一个项目
Mac OSX Lion 10.7.5
我已经用
brew
安装了
NGINX
,并修改了
NGINX.conf
,如下所示:

worker_processes  1;
error_log  logs/error.log  info;

events {
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8081;
        server_name  localhost;

    root /;

    access_log /Users/lorenzo/grails/projects/logs/myproject_access.log;

        location / {
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
            proxy_pass http://localhost:8081;
        }

    #images folders
    location /posters {
        root /Users/lorenzo/grails/projects/posters/;   
    }

    #images folders
    location /avatars {
        root /Users/lorenzo/grails/projects/avatars/;
    }

    #images folders
    location /waveforms {
        root /Users/lorenzo/grails/projects/waveforms/;     
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
当我访问
http://localhost:8081
我的网站正在运行,但我想确定
图像是由
nginx
提供的,而不是由
tomcat
提供的,所以我查看了
myproject\u access.log
,但什么都没有发生

ngnix
仅在
tomcat
未运行时写入日志

有没有办法“监视”nginx提供的静态文件

多谢各位

编辑

Executing curl -I http://localhost:8081
当tomcat运行时,输出为:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1    //TOMCAT
...
HTTP/1.1 500 Internal Server Error
Server: nginx/1.4.1   //NGINX
Date: Tue, 08 Apr 2014 09:30:00 GMT
Content-Type: text/html
Content-Length: 192
Connection: keep-alive 
当tomcat未运行时,输出为:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1    //TOMCAT
...
HTTP/1.1 500 Internal Server Error
Server: nginx/1.4.1   //NGINX
Date: Tue, 08 Apr 2014 09:30:00 GMT
Content-Type: text/html
Content-Length: 192
Connection: keep-alive 

您的问题是,您要让两台服务器在同一个端口上侦听,您需要将tomcat移动到另一个端口,如
8082
,并让nginx侦听主端口(在您的情况下是
8081
),然后在请求不是映像(或任何资产)时告诉nginx代理
8082

这里还有对服务器块的改进

server {
  server_name localhost;
  listen 8081;
  root /Users/lorenzo/grails/projects;
  location @tomcat {
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://localhost:8082;
  }
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root   html;
  }
  location / {
    try_files $uri $uri/ @tomcat;
  }
}

您的问题是,您要让两台服务器在同一个端口上侦听,您需要将tomcat移动到另一个端口,如
8082
,并让nginx侦听主端口(在您的情况下是
8081
),然后在请求不是映像(或任何资产)时告诉nginx代理
8082

这里还有对服务器块的改进

server {
  server_name localhost;
  listen 8081;
  root /Users/lorenzo/grails/projects;
  location @tomcat {
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://localhost:8082;
  }
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root   html;
  }
  location / {
    try_files $uri $uri/ @tomcat;
  }
}

您的问题是,您要让两台服务器在同一个端口上侦听,您需要将tomcat移动到另一个端口,如
8082
,并让nginx侦听主端口(在您的情况下是
8081
),然后在请求不是映像(或任何资产)时告诉nginx代理
8082

这里还有对服务器块的改进

server {
  server_name localhost;
  listen 8081;
  root /Users/lorenzo/grails/projects;
  location @tomcat {
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://localhost:8082;
  }
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root   html;
  }
  location / {
    try_files $uri $uri/ @tomcat;
  }
}

您的问题是,您要让两台服务器在同一个端口上侦听,您需要将tomcat移动到另一个端口,如
8082
,并让nginx侦听主端口(在您的情况下是
8081
),然后在请求不是映像(或任何资产)时告诉nginx代理
8082

这里还有对服务器块的改进

server {
  server_name localhost;
  listen 8081;
  root /Users/lorenzo/grails/projects;
  location @tomcat {
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://localhost:8082;
  }
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root   html;
  }
  location / {
    try_files $uri $uri/ @tomcat;
  }
}


谢谢你的回答!我正在尝试你的解决方案,但仍然不完全明白到底发生了什么。。在我的浏览器上,我应该使用或8082吗?对不起,如果这是一个愚蠢的问题,但我有点不知所措。。我仍然不知道如何查看静态文件是否由nginx提供,或者tomcat8082将是tomcat服务器,8081将是nginx服务器,您将像现在一样正常编写8081,服务器将决定它是否是一个可以立即传递的请求,如图像、css文件或js文件,如果不是nginx,则会将请求传递给tomcat,等待tomcat回复,然后将回复传递给用户8081,指向nginx,将8082传递给tomcat,对于8082,它可以工作,但是对于8081,我得到错误500。如果您可以从错误日志中告诉我错误,它也会很有帮助。如果是错误,请尝试
sudo nginx-t
,并将输出粘贴给我谢谢您的回答!我正在尝试你的解决方案,但仍然不完全明白到底发生了什么。。在我的浏览器上,我应该使用或8082吗?对不起,如果这是一个愚蠢的问题,但我有点不知所措。。我仍然不知道如何查看静态文件是否由nginx提供,或者tomcat8082将是tomcat服务器,8081将是nginx服务器,您将像现在一样正常编写8081,服务器将决定它是否是一个可以立即传递的请求,如图像、css文件或js文件,如果不是nginx,则会将请求传递给tomcat,等待tomcat回复,然后将回复传递给用户8081,指向nginx,将8082传递给tomcat,对于8082,它可以工作,但是对于8081,我得到错误500。如果您可以从错误日志中告诉我错误,它也会很有帮助。如果是错误,请尝试
sudo nginx-t
,并将输出粘贴给我谢谢您的回答!我正在尝试你的解决方案,但仍然不完全明白到底发生了什么。。在我的浏览器上,我应该使用或8082吗?对不起,如果这是一个愚蠢的问题,但我有点不知所措。。我仍然不知道如何查看静态文件是否由nginx提供,或者tomcat8082将是tomcat服务器,8081将是nginx服务器,您将像现在一样正常编写8081,服务器将决定它是否是一个可以立即传递的请求,如图像、css文件或js文件,如果不是nginx,则会将请求传递给tomcat,等待tomcat回复,然后将回复传递给用户8081,指向nginx,将8082传递给tomcat,对于8082,它可以工作,但是对于8081,我得到错误500。如果您可以从错误日志中告诉我错误,它也会很有帮助。如果是错误,请尝试
sudo nginx-t
,并将输出粘贴给我谢谢您的回答!我正在尝试你的解决方案,但仍然不完全明白到底发生了什么。。在我的浏览器上,我应该使用或8082吗?对不起,如果这是一个愚蠢的问题,但我有点不知所措。。我仍然不知道如何查看静态文件是否由nginx提供,或者tomcat8082将是tomcat服务器,8081将是nginx服务器,您将像现在一样正常编写8081,服务器将决定它是否是一个可以立即传递的请求,如图像、css文件或js文件,如果不是nginx,则会将请求传递给tomcat,等待tomcat回复,然后将回复传递给用户8081,指向nginx,将8082传递给tomcat,对于8082,它可以工作,但是对于8081,我得到了错误500。如果您可以从错误日志中告诉我错误,它也会很有帮助。如果是错误,请尝试
sudo nginx-t
并粘贴输出