我有nginx(1.15)在流浪汉中以集群模式在docker容器中运行。这是我的nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
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;
keepalive_timeout 65;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
#gzip on;
proxy_connect_timeout 1200s;
proxy_send_timeout 3600s;
proxy_read_timeout 3600s;
include /etc/nginx/conf.d/*.conf;
}
这是我生成的配置文件/etc/nginx/conf.d/app.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
client_max_body_size 100M;
proxy_buffering on;
proxy_intercept_errors off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
location /jarvis/ {
resolver 127.0.0.11 valid=1s;
rewrite ^/jarvis(/.*) $1 break;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_pass http://jarvis:8000;
proxy_pass_request_headers on;
proxy_redirect off;
}
location /nginx/ {
resolver 127.0.0.11 valid=1s;
rewrite ^/nginx(/.*) $1 break;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_pass http://nginx:80;
proxy_pass_request_headers on;
proxy_redirect off;
}
}
当我将 http://localhost:8002/jarvis/health/ 卷曲在一个容器中时,它可以正常工作。
但是,当我从浏览器访问时,nginx在日志中抛出以下错误,在浏览器中出现404错误。
2018/10/01 05:11:07 [error] 61#61: *9 open() "/usr/share/nginx/html/jarvis/health" failed (2: No such file or directory), client: 10.255.0.2, server: localhost, request: "GET /jarvis/health HTTP/1.1", host: "localhost:8002"
10.255.0.2 - - [01/Oct/2018:05:11:07 +0000] "GET /jarvis/health HTTP/1.1" 404 571 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-"
2018/10/01 05:11:07 [error] 61#61: *10 open() "/usr/share/nginx/html/robots.txt" failed (2: No such file or directory), client: 10.255.0.2, server: localhost, request: "GET /robots.txt HTTP/1.1", host: "localhost:8002"
10.255.0.2 - - [01/Oct/2018:05:11:07 +0000] "GET /robots.txt HTTP/1.1" 404 571 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-"
当我将两个配置文件合为一个文件时,无论是从curl还是从浏览器中都能正常工作。另外,当我在app.conf中使用上游时(由于IP是动态的,因此不符合我的要求),它可以在curl和浏览器中正常工作。
您能告诉我我做错了什么吗,过去三天我一直陷入困境,找不到任何解决办法