Я мог бы настроить Nginx-Passenger-Rails5 и развернуть с помощью Capistrano с этим руководством https://gorails.com/deploy/ubuntu/18.04#nginx-passenger для моего API.После попытки с Postman и httpie, похоже, работает, единственная проблема в том, что у меня приложение на React Native и перестает работать fetch, просто показываю 401 Unauthorized.
Я уже пытаюсь добавить Cors в Nginx и rails (приложение.rb) чтение в других местах, но все еще не работает.
Часть моего кода
server {
client_body_in_file_only on;
server_name api.my.server.name www.api.my.server.name;
root /home/deploy/funes-api/current/public;
passenger_enabled on;
passenger_app_env production;
location /cable {
passenger_app_group_name myapp_websocket;
passenger_force_max_concurrent_requests_per_process 0;
}
# Allow uploads up to 100MB in size
client_max_body_size 100m;
location ~ ^/(assets|packs) {
expires max;
gzip_static on;
}
ignore_invalid_headers off;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header "Access-Control-Expose-Headers" 'access-token,client,expiry,uid,token-type,Content-Type';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,access-token,client,expiry,uid,token-type';
# listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/api.funes.org/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/api.funes.org/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.my.server.name) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = api.my.server.name) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Expose-Headers' 'access-token,client-expiry,uid,token-type,Content-Type';
add_header 'Access-Control-Allow-Methods' '*';
add_header 'Access-Control-Allow-Headers' '*';
server_name api.my.server.name www.my.server.name;
return 404; # managed by Certbot
config.middleware.use Rack::Cors do
allow do
origins '*'
resource '*',
headers: :any,
expose: ['access-token', 'expiry', 'token-type', 'uid', 'client'],
methods: [:get, :post, :options, :delete, :put]
end
end
В ответе каждый раз отображается только 401 Несанкционированный