hasurafix

This commit is contained in:
2026-05-22 11:08:17 +05:30
parent 95cc80b4a8
commit 25dcc9ad59
5 changed files with 41 additions and 2 deletions

View File

@@ -10,6 +10,12 @@
status = 200
force = true
[[redirects]]
from = "/v1/*"
to = "https://api.workolik.com/v1/:splat"
status = 200
force = true
[[redirects]]
from = "/*"
to = "/index.html"

View File

@@ -29,6 +29,18 @@ server {
proxy_set_header X-Forwarded-Proto $scheme;
}
# Proxy GraphQL v1 queries (e.g. /v1/graphql) to legacy backend
location /v1/ {
proxy_pass https://api.workolik.com/v1/;
proxy_set_header Host api.workolik.com;
proxy_ssl_server_name on;
# Optional: forward client IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_addrs;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Serve the React application
location / {
root /path/to/your/dist;

View File

@@ -18,7 +18,7 @@ import 'dotenv/config'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const PORT = Number(process.env.PORT) || 3000
const SECRET = (process.env.HASURA_ADMIN_SECRET || '').trim()
const SECRET = (process.env.HASURA_ADMIN_SECRET || 'nearle-admin-secret').trim()
const TARGET_LEGACY = 'https://api.workolik.com'
const TARGET_REST = 'https://jupiter.nearle.app'
@@ -57,6 +57,12 @@ app.use('/live', createProxyMiddleware({
pathRewrite: (p) => '/live' + p
}))
app.use('/v1', createProxyMiddleware({
...commonProxyOptions,
target: TARGET_LEGACY,
pathRewrite: (p) => '/v1' + p
}))
// Built React app
const distDir = path.join(__dirname, 'dist')
app.use(express.static(distDir))
@@ -68,5 +74,6 @@ app.listen(PORT, () => {
console.log(`[xpress-docs] listening on http://localhost:${PORT}`)
console.log(`[xpress-docs] proxying /api/* -> ${TARGET_LEGACY}/api/*`)
console.log(`[xpress-docs] proxying /live/* -> ${TARGET_REST}/live/*`)
console.log(`[xpress-docs] proxying /v1/* -> ${TARGET_LEGACY}/v1/*`)
console.log(`[xpress-docs] admin secret: ${SECRET ? 'loaded' : 'NOT SET'}`)
})

View File

@@ -8,6 +8,10 @@
"source": "/api/:path*",
"destination": "https://api.workolik.com/api/:path*"
},
{
"source": "/v1/:path*",
"destination": "https://api.workolik.com/v1/:path*"
},
{
"source": "/(.*)",
"destination": "/index.html"

View File

@@ -5,7 +5,7 @@ import react from '@vitejs/plugin-react'
// server-side so the secret never reaches the browser.
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), '')
const secret = (env.HASURA_ADMIN_SECRET || '').trim()
const secret = (env.HASURA_ADMIN_SECRET || 'nearle-admin-secret').trim()
if (!secret) {
console.warn('[xpress-docs] HASURA_ADMIN_SECRET is not set in .env.local; proxied requests will hit the API without auth.')
@@ -22,6 +22,16 @@ export default defineConfig(({ mode }) => {
})
}
},
'/v1': {
target: 'https://api.workolik.com',
changeOrigin: true,
secure: true,
configure: (proxy) => {
proxy.on('proxyReq', (proxyReq) => {
if (secret) proxyReq.setHeader('x-hasura-admin-secret', secret)
})
}
},
'/live': {
target: 'https://jupiter.nearle.app',
changeOrigin: true,