已找大佬远程帮忙解决,是 docker 内部还有个 nginx,把请求拦截了,谢谢大家。
是 curl 接口吗,curl 接口的话都是正常的,我 postman 请求的话也是正常,不明白为什么路由中加入了 mount 的这几个地址不行
似乎不是,清理了缓存
嗯嗯,已修改 proxy_pass,拼接的路径就是http://127.0.0.1:7000/admin/exception-track
但是还是访问不到
嗯,我拿 exception-track 试下,我在 nginx 加上了
location /admin/exception-track {
proxy_pass http://127.0.0.1:7000/admin/exception-track;
}
然后重启了,不行
2020/11/18 07:11:41 [error] 42#42: *6509 open() "/usr/share/nginx/html/api_docs/swagger_docs/v1" failed (2: No such file or directory)
已删除,重启 nginx,再访问好像还是不行
嗯嗯,conf.d/guiqie.conf 应该是走了,因为里面配置了域名和域名指向的 ip:port,在 postman 发送请求都是正常的。
/etc/nginx/sites-available
现在是软连接到/etc/nginx/sites-enabled
下的。
然后我在nginx.conf
我改成了
include /etc/nginx/sites-enabled/*;
include /etc/nginx/conf.d/*.conf;
发现还是不行,是我哪里可能还有问题吗?
输入grep -r "/usr/share/nginx/html" /etc/nginx
没有,然后改成了grep -r "/usr/share" /etc/nginx
结果如下:
/etc/nginx/sites-available/default:# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
麻烦大家了
nginx.config
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
client_max_body_size 100M;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
/etc/nginx/conf.d/guiqie.conf
server {
listen 80;
server_name guiqie.cc;
location / {
#add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, PUT, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,token';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:7000;
proxy_http_version 1.1;
}
}
本地是可以访问的,但是线上就 404 了,其他请求,比如 get,在浏览器上都可以正常访问
感谢您的回复,我在 nginx 配置如下
location /admin/exception-track {
alias /home/app/aixuexi;
}
生产环境下正常访问 routes.rb 文件中配置的其他请求都是可以的,不知道为什么 mount 不行。
谢谢,可以啦。
@huacnlee 大佬麻烦帮忙看下,打扰了。
先回答刚刚您说的两个问题:1.worker 是阻塞操作吗?2.不返回前端页面用户端也一直阻塞吗? 1.是 2.是 问题 x 问题当下我是混乱的,说明起来我也不能保证我说的能表述清楚,我当前特别想知道这个 y 在 ruby 中要如何实现呢? 求指教,麻烦了,多谢。
不好意思,我没有把问题表达清楚,我好好看看您发的 X-Y 再来回复。
现在实现想法是在 controller 中加一个 action,也就是前端点击触发的:
def run_jenkins
第一步. 调用worker
第二步. 返回前端页面
end
在 run_jenkins 中执行第一步"调用 worker",是调用 model 中定义的方法,想在第二步“返回前端页面”前每间隔 1 分钟执行第一步,其实也就是一直走这个 worker,直到得到我想要的结果为止,才能执行第二步“返回前端页面”。
特殊需求,用 jenkins 集成第三方。
嗯嗯,这个好,是应该这样做。
谢谢,我看下。
好的,谢谢。
好的,感谢。
感谢。但是我查了下 ActiveJob 好像是 rails 4.2 才引进的,我项目比较老,rails 是 3.2,是否还有满足我需求的的低版本的 gem 吗?
已实现,谢谢大家~
没,我找下,试下。
好的,我看下。
不消极了,我好好研究下,感谢提供 api。
我这种带文件,又有数组参数,请求的话一直是 400(Bad Request)。
ip 地址不是真的,已经换过了。