返回

如何在 Ubuntu Server 中为 Windows 10 子系统应用启用公共 URL 访问权限?

vue.js

在 Ubuntu Server 中为 Windows 10 子系统应用启用公共 URL 访问权限

概述

在 Windows 10 子系统中配置 Ubuntu Server 时,访问安装在其中的应用可能是一个挑战。本指南将详细阐述如何在 Ubuntu Server 上启用公共 URL 访问权限,以便你可以使用 Nginx、Python Django 和 VueJS 应用从远程位置访问你的应用。

先决条件

  • Windows 10 系统
  • 安装了 Ubuntu 22.04.6 子系统
  • 已安装 Python、Django、VueJS、Postgres 和 Nodejs
  • Nginx Web 服务器

步骤

1. 启用防火墙

启用 Ubuntu 服务器的防火墙以允许必要端口的流量。

sudo ufw enable

2. 允许端口

允许 HTTP 和 HTTPS 流量通过防火墙。

sudo ufw allow 80
sudo ufw allow 443

3. 编辑 Nginx 配置文件

编辑 Nginx 配置文件 /etc/nginx/sites-available/default,并添加以下内容:

server {
    listen 80;
    server_name 你的公共IP地址;

    location = /static/favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/你的用户名/你的应用路径;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

4. 重启 Nginx

重启 Nginx 以应用更改。

sudo systemctl restart nginx

5. 确认配置

使用以下命令验证 Nginx 配置。

sudo nginx -t

6. 创建 gunicorn 服务和套接字文件

创建 gunicorn 服务和套接字文件,以将 Django 应用与 Nginx 连接起来。

gunicorn.socket

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

gunicorn.service

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=你的用户名
Group=www-data
WorkingDirectory=/home/你的用户名/你的应用路径
ExecStart=/home/你的用户名/你的应用路径/env/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/gunicorn.sock \
          你的应用名.wsgi:application

[Install]
WantedBy=multi-user.target

7. 启动 gunicorn 服务

sudo systemctl start gunicorn
sudo systemctl enable gunicorn

预期结果

按照这些步骤操作后,你可以从公共 IP 地址访问你的应用。这意味着外部用户可以远程访问你的应用,即使它托管在你的 Windows 10 电脑上。

故障排除

  • 检查你的公共 IP 地址是否正确
  • 确保防火墙已允许必要的端口
  • 确认 Nginx 配置文件已正确配置
  • 检查错误日志以识别任何潜在问题

常见问题解答

问:为什么我无法从公共 IP 地址访问我的应用?
答:检查防火墙配置、Nginx 配置和 gunicorn 服务状态。

问:如何保护我的应用免受外部攻击?
答:使用 SSL 证书并实施安全措施,例如防跨站脚本 (XSS) 保护和输入验证。

问:我如何优化我的应用的性能?
答:优化数据库查询、使用缓存机制并考虑使用负载均衡。

问:我可以使用其他 Web 服务器吗?
答:是的,你可以使用 Apache 或 Caddy 等其他 Web 服务器。

问:我可以使用不同的编程语言吗?
答:是的,你可以使用 Python、Nodejs、Ruby 或其他编程语言来开发你的应用。