Node.js uygulamasını Apache üzerinde DNS yönlendirme yaparken dosyalara erişilemiyor

Yusufkk38

Hectopat
Katılım
31 Mayıs 2019
Mesajlar
98
Çözümler
1
Yer
Dathomir
Daha fazla  
Cinsiyet
Erkek
Node.js Uygulamasını Apache Üzerinde DNS Yönlendirme ile Barındırırken client sunucunun sunduğu dosyalara Erişemiyor

Ubuntu 22.x.x ile bir sanal sunucu çalıştırıyorum ve bir Apache sunucusunda Node.js uygulamasını barındırıyorum. DNS'yi bu uygulamaya iletmeye çalışıyorum. Ancak DNS iletme ayarlandığında istemciler sunucu tarafından sunulan görüntülere erişemiyor

Atılan adımlar:
Apache sunucusunda yapılandırılmış VirtualHost ve Node.js uygulaması çalışıyor.
Etki alanım (ör. example.com) ve güncellenmiş DNS kayıtları için düzgün şekilde yapılandırılmış DNS yönlendirme.
Tarayıcıya alan adını (example.com) girdiğinizde Node.js uygulamasına erişilebilir ancak görsellere erişilemiyor.

Apache VirtualHost configuration:
Kod:
<VirtualHost *:80>
ServerName ykaan.com.tr
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
</VirtualHost>

Node.js uygulaması
JavaScript:
import express from "express";
import cors from "cors";
import dbConnect from "./db/dbConnect.js";
import userRouters from "./routes/userRouters.js";
import courseRouters from "./routes/courseRouters.js";
import adminRouters from "./routes/adminRouters.js";
import categoryRouters from "./routes/categoryRouters.js";
import session from "express-session";
import connectMongo from "connect-mongodb-session";
import authMiddlewares from "./middlewares/authMiddlewares.js";
import fileUpload from "express-fileupload";
import { dirname, resolve } from "node:path";
import { fileURLToPath } from "node:url";
import path from "path";
import dotenv from "dotenv";
import { config } from "dotenv";
dotenv.config();
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

const app = express();

// MongoDBStore oluşturuldu
const MongoDBStore = connectMongo(session);

// Database connection
dbConnect(); // MongoDB veritabanına bağlantıyı oluşturan fonksiyon

// Middlewares
app.use(cors()); // Cross-Origin Resource Sharing (CORS) izinleri
app.use(express.json()); // JSON veri analizi middleware
app.use(express.urlencoded({ extended: true })); // URL-encoded veri analizi middleware
app.use(fileUpload());
app.use(express.static(path.join(__dirname, "build")));

// Session middleware
const store = new MongoDBStore(                                                                                    
  {
    uri: process.env.DB_URL,
    collection: "sessions",
  },
  (error) => {
    if (error) {
      console.error("Error connecting to MongoDB for sessions:", error);
    }
  }
);

app.use(
  session({
    secret: "my-secret-key", // Session verilerini güvence altına almak için gizli anahtar
    resave: false,
    saveUninitialized: true,
    store: store, // MongoDBStore kullanarak session verilerini depolama
    cookie: {
      secure: false,
      httpOnly: true,
      maxAge: 24 * 60 * 60 * 1000, // 24 saat
    },
  })
);

// Routes
app.use(
  "/api/admin",
  authMiddlewares.isLoggedIn,
  authMiddlewares.isAdmin,
  adminRouters
);
app.use("/api/users", userRouters);
app.use("/api/courses", courseRouters);
app.use("/api/categories", categoryRouters);

app.get("*", (req, res) => {
  res.sendFile(path.join(__dirname, "build", "index.html"));
});

app.get("/public/uploads/:file", (req, res) => {
  const filePath = resolve(__dirname, "public", "uploads", req.params.file);
  res.sendFile(filePath, {
    maxAge: 24 * 60 * 60 * 1000 * 30,
  });
});

app.listen(5000, () => {
  console.log("Server is running on port 5000");
});

İstemcideki resmin URL : http://ykaan.com.tr/public/uploads/image_react.webp

DNS A ve CNAME kaydı:

Ekran görüntüsü 2024-03-16 150738.png
 
Son düzenleyen: Moderatör:

Yeni konular

Geri
Yukarı