2016-01-28 23 views
5

Vì vậy, tôi đã có một ứng dụng nút mà tôi có thể truy cập thông qua localhost: someportnumber. Làm cách nào để hiển thị công khai ứng dụng này (tức là với phần còn lại của interwebz, không chỉ mạng nội bộ của tôi) chỉ sử dụng máy của tôi mà không phải là một số loại dịch vụ lưu trữ. Máy là một macbook chuyên nghiệp, không chắc chắn nó quan trọng.Lưu trữ ứng dụng Node trên máy của tôi

Lưu ý - điều này hoàn toàn là để hiểu, tôi không tìm cách lưu trữ vĩnh viễn một webapp đồ chơi trên máy tính xách tay của mình.

Đây là sự nhầm lẫn của tôi - ứng dụng node.js của tôi LÀ NHÀ BẢO TỆ, tại sao tôi cần một máy chủ khác (tức là một máy chủ được cung cấp bởi heroku, aws, v.v.) để lưu trữ ứng dụng của tôi? Tôi cảm thấy như tôi đang thiếu một cái gì đó ...

Trả lời

8

Giả sử đây là mạng gia đình, khi đó bạn có thể có một số loại bộ định tuyến/tường lửa kết nối mạng gia đình của bạn với internet. Theo mặc định, bộ định tuyến chặn tất cả các kết nối đến mạng (vì lý do bảo mật).

Nếu bạn muốn, bạn có thể thiết lập quy tắc chuyển tiếp cổng nơi bạn nói cho bộ định tuyến rằng bạn muốn bất kỳ kết nối đến nào trên cổng 80 (cổng http mặc định từ trình duyệt) được chuyển trực tiếp đến macbook pro trên mạng gia đình của bạn. Thông thường, bạn sẽ làm điều đó bằng cách khám phá địa chỉ IP của macbook pro của bạn khi nó nằm trên mạng gia đình của bạn và bạn sẽ thiết lập quy tắc chuyển tiếp cổng tới địa chỉ IP đó. Quy tắc chuyển tiếp cổng thường được định cấu hình thông qua một số loại giao diện người dùng quản trị dựa trên web mà bạn có thể sử dụng từ trình duyệt web. Bạn sẽ phải xem hướng dẫn sử dụng cho bộ định tuyến cụ thể của bạn để xem cách tốt nhất để kết nối với nó và cấu hình nó.

Trừ khi bạn đặt macbook pro để có địa chỉ IP tĩnh, địa chỉ IP của nó sẽ được định tuyến động bởi bộ định tuyến. Nó có thể sẽ giữ nguyên trong một thời gian ngắn, nhưng có thể thay đổi theo thời gian.

Khi bạn đã thực hiện việc này, bạn cần phải khám phá địa chỉ IP của kết nối web gia đình của bạn. Điều này có thể cũng sẽ được gán động, nhưng cũng nên giữ nguyên trong một thời gian. Một trong những bạn biết địa chỉ IP này, sau đó một trình duyệt trên mạng nội bộ có thể kết nối với máy chủ web của bạn bằng cách truy cập URL http://xxx.yyy.zzz trong đó xxx.yyy.zzz là địa chỉ IP của mạng gia đình của bạn như được nhìn thấy từ interwebs.

Nếu bạn muốn kết nối với tên miền thông thường như http://mysampledomain.com, thì có một số dịch vụ DNS động mà bạn có thể thanh toán để thiết lập tên miền cho địa chỉ IP động của bạn, mặc dù đây là không được khuyến nghị cho bất kỳ sử dụng lâu dài nào. Bên cạnh đó có thể là chống lại các quy tắc của ISP của bạn, nó không phải là một giải pháp đặc biệt mở rộng hoặc mạnh mẽ. Việc chuyển sang nhà cung cấp dịch vụ lưu trữ sẽ có ý nghĩa hơn về lâu dài.

Dưới đây là sự nhầm lẫn của tôi - ứng dụng Node.js tôi LÀ một máy chủ web, tại sao tôi cần máy chủ khác (có nghĩa là mật được cung cấp bởi Heroku, AWS, vv) để lưu trữ ứng dụng của tôi? Tôi cảm thấy như tôi đang thiếu một cái gì đó ...

Bạn không cần một máy chủ web khác. Nếu bạn tìm nhà cung cấp dịch vụ lưu trữ, bạn sẽ sử dụng nhà cung cấp dịch vụ lưu trữ tốt cho việc lưu trữ các máy chủ node.js. Với các loại nhà cung cấp đó, có thể sẽ không có một máy chủ web khác - máy chủ node.js của bạn sẽ là máy chủ duy nhất có liên quan.Họ có thể có proxy hoặc cân bằng tải mà họ sử dụng để tạo ra công việc môi trường nhiều người thuê, nhưng bạn hầu như không biết về những người khác ngoài việc đảm bảo bạn làm theo hướng dẫn cài đặt thích hợp để máy chủ node.js của bạn hoạt động đúng cách môi trường.

+1

Tôi nghi ngờ chuyển tiếp cổng là câu trả lời ở đây. Tôi nên nghĩ điều này một chút trước khi đăng. Tuy nhiên, tôi rất cảm kích câu trả lời chi tiết. –

0

Cách này không khuyến nghị vĩnh viễn nhưng để demo, thử nghiệm bạn có thể mở cổng trong bộ định tuyến của bạn và cổng khác (từ internet công cộng) có thể truy cập vào nó. Sử dụng một số DNS động miễn phí như no-ip để ánh xạ với miền nếu bạn cần một miền. Hy vọng rằng có thể giúp bạn.

1

bạn có thể sử dụng nginx và thêm cấu hình về proxy nginx của bạn để nút của bạn js nó ví dụ cấu hình với nginx

server { 
listen 80; 

server_name example.com; 

location/{ 
    proxy_pass http://APP_PRIVATE_IP_ADDRESS: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; 
} 
} 
+0

Khá chắc chắn điều này một mình không phải là một giải pháp. –

3

Bạn không cần một máy chủ để lưu trữ các ứng dụng - bạn cần một máy chủ được có thể truy cập qua internet. Có rất nhiều cách để làm điều này.

Để tôi truy cập ứng dụng webserver của bạn, tôi cần biết địa chỉ IP của máy tính của bạn. Hãy nói rằng bạn có thể cho tôi công địa chỉ IP của bạn (tìm thấy điều này ở What Is My Ip, đưa địa chỉ cho tôi, và cho tôi mà cổng để kết nối.

Ví dụ. Địa chỉ IP của stackoverflow là 104.16.34.249, nhưng bạn có thể chỉ có địa chỉ IPv6, không phân biệt. Bây giờ, hãy nhớ rằng hầu hết các ISP nhà có thói quen đặt lại địa chỉ IP công cộng của bạn mỗi ngày.

sau đó, bạn cho tôi cổng ứng dụng của bạn, ví dụ như 8080.

Vì vậy, tôi sẽ cố gắng để có được https://104.16.34.249:8080/ (hoặc http://104.16.34.249:8080/, tùy thuộc vào ứng dụng của bạn)

Nhưng tôi sẽ, trong hầu hết các trường hợp, không có gì hoặc bộ định tuyến của bạn. Vì vậy, đó là bước 2: nói với router của bạn để vượt qua lưu lượng truy cập trên cổng này lên đến máy tính của bạn. Bạn có thể có một cấu hình cổng chuyển tiếp đơn giản, hoặc ví dụ. đặt máy tính vào DMZ. (Làm thế nào để làm tất cả điều này là một câu hỏi khác, có lẽ hơn trên ServerFault hoặc SuperUser).

Vì vậy, bây giờ tôi có thể truy cập ứng dụng của bạn từ interwebz.

Nhưng bạn có thể muốn tôi sử dụng một số tên không đổi, không phải địa chỉ IP thay đổi. Vì vậy, bạn đăng ký một dịch vụ như DynDNS hoặc No-IP và cài đặt đoạn mã nhỏ của họ trên máy tính hoặc bộ định tuyến của bạn và họ cung cấp cho bạn một cái gì đó giống như tên máy chủ nhà, ví dụ: http://best-home-webserver-that-will-never-run-out-of-electricity.dyndns.com/ hoặc http://my-cool-app.no-ip.com/.

Nói về việc đẩy mạnh trò chơi của bạn, huh?

Nhưng nếu bạn muốn tên miền "thực", của riêng bạn, như "http://i-have-webz.com:8080/" thì sao? Vâng, bước tiếp theo của bạn là mua tên miền này từ một người nào đó như Namecheap, và sau đó đặt DNS của bạn trỏ đến địa chỉ IP của bạn (nếu nó tĩnh - tức là, nếu nó không thay đổi mọi lúc), hoặc là bí danh vào tên máy chủ không-ip/dyndns (động) của bạn.

Bước tốt tiếp theo sẽ giống như nhận UPS thích hợp, cũng là máy phát điện diesel khi bạn hết điện, thuê một đường DSL khác từ nhà cung cấp khác trên một vòng lặp khác nhau (ví dụ: một cáp và một sợi dây) để sao lưu hoặc có thể mượn truy cập không dây từ hàng xóm của bạn cho mục đích này, thực hiện công cụ dns round-robin, phát triển một doanh nghiệp lớn ra khỏi nó sau đó di chuyển tất cả sang Amazon.

Điều được mô tả ở trên là các bước cấp cao chỉ cho một cách để xử lý kịch bản của bạn. Nó không phải là một cách rất hoàn chỉnh, không đầy đủ trong pitfals có thể. Có nhiều hơn nữa, có lẽ là cách tốt hơn để làm nhiều hoặc tất cả các bước.

Các vấn đề liên quan