我正在使用function updateDocumentWithNewData(document, newData) {
return new Promise(function(resolve, reject) {
//some code...
for (let key in newData) {
if (newData.hasOwnProperty(key)) {
//verifying if the document already has the property
if (document.hasOwnProperty(key)) {
return reject({'message' : 'a property already exists...'});
}
//some code...
}
}
//some more code...
console.log("passed here!!!");
resolve(document);
});
}
nginx
容器(https://github.com/jwilder/nginx-proxy)来代理对在其他docker容器中运行的docker
实例的请求。每个子域都有自己的apache docker容器。其中一个子域( sub1 )需要一些特殊规则:
如果网址以" foo"开头那么我希望nginx检查文件是否存在。如果文件存在,那么它应该将URL重写为访问控制脚本(imageControl.php),并将其传递给通常的apache容器。如果该文件不存在,那么我希望将请求代理到远程服务器。
我认为我设置正确,但由于某种原因,nginx总是将请求发送到远程服务器 - 即使文件存在于本地。
以下是docker容器中nginx配置文件的相关部分:
default.conf(包含在nginx.conf中):
apache
/etc/nginx/vhost.d/sub1.mydomain.com:<< em>
upstream sub1.mydomain.com {
## Can be connect with "dockerized_default" network
# dockerized_sub1
server 172.18.0.2:80;
}
server {
server_name sub1.mydomain.com;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
include /etc/nginx/vhost.d/sub1.mydomain.com;
location / {
proxy_pass http://sub1.mydomain.com;
}
}
请注意,我不希望nginx尝试运行imageControl.php(我没有使用location ^~ /foo/ {
root /path/to/dockerized/webroot;
try_files $uri @rewrite @remoteproxy;
}
location @remoteproxy {
include vhost.d/remoteproxy.inc;
proxy_pass http://remote.ip.address.here;
}
location @rewrite {
rewrite ^/(.*)$ /imageControl.php?file=$1 break;
}
) - 我希望nginx将它传递给上游的apache容器。
期望的行为示例:
(此部分有效)
(此部分不起作用)
我很感激一些帮助。
答案 0 :(得分:1)
使用if -e
表达式可能会更幸运:
location ^~ /foo/ {
root /path/to/dockerized/webroot;
if (-e $request_filename) {
rewrite ^/(.*)$ /imageControl.php?file=$1 last;
}
include vhost.d/remoteproxy.inc;
proxy_pass http://remote.ip.address.here;
}
有关详情,请参阅this document。