1

我可以使用本教程https://gorails.com/deploy/ubuntu/18.04#nginx-passenger为我的 API配置 Nginx-Passenger-Rails5 并使用 Capistrano 进行部署。在尝试使用 Postman 并且 httpie 似乎工作后,唯一的问题是我在 React Native 上有一个应用程序并且 fetch 停止工作,只显示 401 Unauthorized。

我已经尝试将 Cors 添加到 Nginx 和 rails (application.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 Unauthorized

4

0 回答 0