node.js + nginx
-
Các bác nào đã có kinh nghiệm trong việc hosting node.js app lên server với web server là nginx rồi thì có thể chỉ giáo em với được không ạ? Em loay hoay mấy hôm rồi mà vẫn chưa làm được ạ
-
Bạn nên cung cấp nhiều thông tin hơn
- Bạn đang làm theo hướng dẫn nào
- Host chỗ nào ?
- Bạn đang làm chưa được đoạn nào ?
Thông tin càng chi tiết thì có người khác mới dễ giúp bạn hơn
-
@CodeConCat Dạ vâng ạ, để em cung cấp thêm
Tut em đã tìm hiểu và làm theo:
- https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04
- https://gist.github.com/soheilhy/8b94347ff8336d971ad0
Server của em là server private do trường cung cấp, chạy Ubuntu 18.04
Em đã thử proxy_pass đến node app tại localhost theo hướng dẫn mà khi vào, nó vẫn báo 404 ạ. Em đính kèm thêm ảnh config nginx của em:
-
Mình không biết bạn lỗi ở đâu, nhưng mình gợi ý, bạn có thể tham khảo
-
Bạn có thể đăng kí một nick DigitalOcean và thử deploy theo hướng dẫn xem có có được không trước khi thử server của trường cấp ( https://try.digitalocean.com/performance/ dùng link này hình như dc free $50 hay có mã DROPLET10 gì gì đó, hoặc bạn có thể bỏ $5 ra, k đáng bao nhiêu để học )
-
Thử deploy ( k dùng nginx ), để kiểm tra xem app mình có chạy và truy cập được không ( nhớ mở port các kiểu )
Để giải một vấn đề gì đó, bạn nên Phân tích ra thành những bước nhỏ ( breaking a problem down into smaller problems ), như vậy sẽ dễ giải quyết và tạo cho mình tư duy tốt
Còn không được nữa thì PM hỏi thầy trên trường hướng dẫn cho
-
-
Mình thử deploy app rồi ạ, chạy bình thường. Mình chỉ vướng mỗi cái vụ nginx thôi ạ
Thôi dù sao cũng cảm ơn bạn
-
Bạn cup cấp thử URL app
-
@Dương-Quang-Khải @CodeConCat mình nghĩ vướng chỗ cấu hình nginx thôi. Cũng khó khi bạn ấy ko diagnose được chết ở đoạn nào
-
This post is deleted!
-
@Vũ vâng đúng ạ
-
@Dương-Quang-Khải Theo mình bạn nên kiểm tra lại kết nối từ máy chủ Nginx đến node app xem đã ok chưa? Thực hành trên máy của bạn hoặc tạo máy ảo ra để test.
Có thể dùng lệnh curl, tracert hoặc telnet để kiểm tra bằng lệnh:
curl --head http://127.0.0.1:8080
Nếu trả về: HTTP/1.1 200 OK thì là kết nối đã ok. Đảm bảo các (đoạn) kết nối là thông suốt. Mô hình đơn giản nhất như hình dưới đây.
Sau khi đảm bảo kết nối thông suốt, bạn thử cấu hình theo
hostname
, chú ý là Hostname nhé. ví dụ là my-app.com chẳng hạn. bạn có thể fix hostname này trong/etc/hosts
đối với linux,C:\Windows\System32\Drivers\etc\hosts
đối với Windows.# Fix hostname cho ứng dụng 127.0.0.1 locahost 127.0.0.1 my-app.com
Sau đó, sửa lại file config nginx như này:
server { listen 80; server_name my-app.com; location / { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
Config xong thì restart lại nginx.
Test xem có ok không, lúc đó bạn mới biết được các cấu hình và kết nối ok. Mọi thứ ok restore về lại config giống như máy chủ để thử nghiệm.
Chúc bạn thành công!
Một vài hướng dẫn bạn có thể đọc thêm
-
Em thử lệnh <code>curl</code> thì được kết quả như này ạ. 1 cái ra status 302, cái còn lại thì 200 ạ
-
@Dương-Quang-Khải HTTP 302 thì là bình thường rồi. Client sẽ thực hiện redirect theo chỉ dẫn
Location: /login
.Như vậy nginx đã trực tiếp giao tiếp được với express server thông qua cổng 8080. Giờ bạn tập trung chẩn đoán cấu hình của
nginx
thôi.
-
@Vũ Dạ vâng nó cũng là phần khoai nhất ạ