Кто-то разработал приложение для меня, которое работает хорошо.К сожалению, он нигде не регистрируется и журналов вообще нет.Приложение запускается командой "rackup" и находится за веб-сервером nginx.Ошибки Sinatra не записываются в журналы nginx.
Файл app.rb
выглядит примерно так:
require './libs'
require 'sinatra'
require 'sinatra/namespace'
set :bind, '::1'
before do
content_type :json
headers 'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Methods' => ['OPTIONS', 'GET', 'POST']
end
namespace '/api/v1' do
namespace '/getit/:thingtoget' do
helpers do
def myhelper1
<stuff>
end
def myhelper1
<stuff>
end
end
before do
myhelper1
myhelper2
end
get '/info' do
WidgetDomain::get_info(@va1, @var2).to_json
end
<more API paths here>
end
Теперь все работает нормально.Но сейчас я хочу представить ведение журнала.Итак, я посмотрел на Sinatra README и там было сказано, что я могу включить ведение журнала следующим образом:
class MyApp < Sinatra::Base
configure :production, :development do
enable :logging
end
end
Я поставил это выше namespace
?Если я объявляю такое приложение, нужно ли каким-то образом мое пространство имен находиться внутри этого кода приложения?Я совсем не понимаю, как это работает.
Похоже, пытается войти в журнал nginx, но вот как выглядит строка ошибки:
2018/12/30 19:53:15 [error] 6615#0: *21522 connect() failed (111: Connection refused) while connecting to upstream, client: <someip>, server: api.example.com, request: "GET /api/v1/getit/thingtoget1/stuff/var1/var2/var3 HTTP/1.1", upstream: "http://[::1]:9292/api/v1/getit/thingtoget/stuff/var1/var2/var3", host: "api.example.com", referrer: "an HTML page from the nginx server"
Это похоже на попытку подключения к серверу для получения сообщения или чего-то еще.Но в случае, если ведение журнала связано с тем, как я объявил сервер в конфигурации nginx, вот оно:
server {
listen 443;
listen [::]:443;
server_name api.myapp.com;
ssl on;
ssl_certificate /etc/nginx/ssl/myapp_com.pem;
ssl_certificate_key /etc/nginx/ssl/star_myapp_com.key;
location / {
proxy_pass http://localhost:9292;
}
}