Ubuntu服务器配置虚拟主机并绑定公网域名的可行性咨询
Ubuntu服务器配置虚拟主机并绑定公网域名的可行性咨询
当然可以!在Ubuntu Server上配置虚拟主机并绑定公网域名是非常常规的操作,完全没问题,我来给你梳理下具体的实现步骤,分Apache和Nginx两种常用Web服务器来讲解:
先做好前期准备
- 首先得确保你的服务器上装了Web服务器,Apache或者Nginx二选一就行。如果还没装:
- 装Apache:运行
sudo apt update && sudo apt install apache2 - 装Nginx:运行
sudo apt update && sudo apt install nginx
- 装Apache:运行
- 你需要有一个已经注册好的公网域名,并且要在域名服务商的后台设置A记录,把域名指向你的服务器公网IP地址。等DNS解析生效(一般几分钟到几小时),域名就能和你的服务器关联上了。
用Apache配置虚拟主机的步骤
- 创建网站根目录:假设你的域名是
example.com,先建存放网站文件的目录:
然后设置目录权限,让当前用户能读写:sudo mkdir -p /var/www/example.com/public_htmlsudo chown -R $USER:$USER /var/www/example.com/public_html sudo chmod -R 755 /var/www/example.com - 写个测试页面:在根目录里新建
index.html,方便后续验证:
写入简单内容,比如:nano /var/www/example.com/public_html/index.html<h1>Welcome to example.com!</h1> - 创建虚拟主机配置文件:复制Apache的默认配置模板来改:
编辑这个配置文件:sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
把内容替换成下面的(记得把sudo nano /etc/apache2/sites-available/example.com.confexample.com换成你的真实域名):<VirtualHost *:80> ServerAdmin your-email@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> - 启用配置并重启服务:
sudo a2ensite example.com.conf # 可选:如果不想用默认的欢迎页面,可以禁用默认站点 sudo a2dissite 000-default.conf # 重启Apache让配置生效 sudo systemctl restart apache2
用Nginx配置虚拟主机的步骤
- 创建网站根目录:同样以
example.com为例:sudo mkdir -p /var/www/example.com/html sudo chown -R $USER:$USER /var/www/example.com/html sudo chmod -R 755 /var/www/example.com - 写测试页面:
写入和之前一样的测试内容就行。nano /var/www/example.com/html/index.html - 创建虚拟主机配置文件:
粘贴下面的配置(替换成你的域名):sudo nano /etc/nginx/sites-available/example.comserver { listen 80; listen [::]:80; root /var/www/example.com/html; index index.html index.htm index.nginx-debian.html; server_name example.com www.example.com; location / { try_files $uri $uri/ =404; } } - 启用配置并重启服务:
# 创建软链接到启用目录 sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ # 测试配置是否有语法错误 sudo nginx -t # 没问题就重启Nginx sudo systemctl restart nginx
额外注意事项
- 防火墙设置:要确保服务器的80端口(HTTP)是开放的,用ufw防火墙的话,直接运行:
- Apache:
sudo ufw allow 'Apache' - Nginx:
sudo ufw allow 'Nginx HTTP'
- Apache:
- HTTPS配置(推荐):如果想让网站更安全,建议配置HTTPS。可以用Let's Encrypt的免费证书:
- Apache:安装certbot工具
sudo apt install certbot python3-certbot-apache,然后运行sudo certbot --apache,跟着提示操作就行,证书会自动配置和续期。 - Nginx:安装certbot工具
sudo apt install certbot python3-certbot-nginx,运行sudo certbot --nginx,按提示完成配置。
- Apache:安装certbot工具
做完这些,你直接在浏览器里输入你的公网域名,就能看到你设置的测试页面啦!
备注:内容来源于stack exchange,提问作者user1053680




