Настройки SSL для Nginx + express - PullRequest
0 голосов
/ 04 августа 2020

Я создаю веб-сервер, используя Nginx и express.

Перенаправляя запросы с порта 80 на порт 443, Nginx разрешает только зашифрованные соединения. И порт 443 перенаправляет запрос на express.

Nginx. Параметры конфигурации:

server {
    listen 80;
    server_name api.domain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name api.domain.com;

    ssl_certificate /path
    ssl_certificate_key /path

    ...

    location / {
        proxy_pass http://localhost:3000;
    }
}

express использует промежуточное ПО CORS.

var app = express();

var cors = require('cors');
app.use(cors());

var server = http.createServer(app).listen(3000, 'localhost', function() { ... });

Я пробовал что-то вроде https://www.steemcoinpan.com/sct/@morning / express - nginx -proxy-ssl-websocket , но оно все равно не работает.

Какие настройки мне нужны?

※ Добавлено

Если я вызываю API, например 'http://api.domain.com/login', [Доступ к XMLHttpRequest в 'http://api.domain.com/login' из источника 'http://localhost: 3000' заблокирован политикой CORS : Ответ на предварительный запрос не проходит проверку контроля доступа: Перенаправление не разрешено для предварительного запроса.] Отображается сообщение об ошибке.

1 Ответ

1 голос
/ 04 августа 2020

Проблема, которую вы описываете, не имеет ничего общего с вашими настройками SSL или Nginx config. Вам необходимо настроить политику CORS . При сортировке убедитесь, что ответ включает заголовок Access-Control-Allow-Origin.

В вашем случае, поскольку вы пытаетесь получить доступ к API из localhost:3000, подойдет что-то вроде Access-Control-Allow-Origin https://localhost:3000. Настройте это в конфигурации Nginx с помощью proxy_set_header или в своем приложении NodeJs и настройте Nginx, чтобы этот заголовок передавался с proxy_pass_header.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...