systemD 서비스에서 CORS(Cross-Origin Resource Sharing) 설정이 작동하지 않습니다.
CORS(Cross Origin Resource Sharing)가 활성화된 노드 모듈이 있습니다. 이제 CORS 구성을 코드에서 systemd 서비스로 이동하는 방법에 대한 질문이 있습니다.
코드의 현재 설정:
private allowCrossDomain(req: express.Request, res: express.Response, next: () => void) {
res.header('Access-Control-Allow-Origin', 'http://localhost:4200');
res.header('Access-Control-Allow-Headers', 'Authorization, Content-Type');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST');
res.header('Access-Control-Allow-Credentials', 'true');
next();
}
대신 myService.service에 CORS를 추가하고 싶지만 다음 설정이 작동하지 않습니다.
[unit]
Description=Tool operation BE
After=network.target
[Service]
User=ubuntu
Environment=BACKEND_HOST=backend-ops-model.com
Environment=BACKEN_MODEL_PORT=80
Environment=res.header='Access-Control-Allow-Origin','http://example.com'
WorkingDirectory=/opt/backend-service/operation
ExecStart=/usr/bin/node --experimental-worker /opt/backend-service/operation/node_modules/@gst/operation-service/www.js
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
답변1
이것이 문제를 해결하는 방법입니다. 코드에 환경 변수로 CORS 옵션을 추가합니다.
private allowCrossDomain(req: express.Request, res: express.Response, next: () => void) {
res.header('Access-Control-Allow-Origin', process.env.CORS_ORIGIN_HOST || 'http://localhost:4200');
...
그런 다음 systemd 구성에 환경 지시어를 추가합니다.
[unit]
Description=Tool operation BE
After=network.target
[Service]
User=ubuntu
Environment=BACKEND_HOST=backend-ops-model.com
Environment=BACKEN_MODEL_PORT=80
Environment=CORS_ORIGIN_HOST=http://alterntive.com
WorkingDirectory=/opt/backend-service/operation
ExecStart=/usr/bin/node --experimental-worker /opt/backend-service/operation/node_modules/@gst/operation-service/www.js
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
위 구성에서 systemd에 환경 변수를 제공하지 않으면 localhost:4200이 기본값으로 선택됩니다. 같은 문제를 겪고 있는 다른 사람들에게도 도움이 되기를 바랍니다.