基本上,我有一个在服务器的 4000 端口上运行的 Nodejs 程序,我希望访问者在访问 mydomain.com 的普通域时显示它,而不是必须输入 mydomain.com:4000 才能访问它,但我似乎无法让它工作。
这是我在 /etc/apache2/sites-available/ 中设置虚拟主机时所做的操作:
<VirtualHost *:80>
ServerName my-domain.net
ServerAlias www.my-domain.net
DocumentRoot /var/www/my-domain/public
<Directory /var/www/myproject/public>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/myproject-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/myproject-access.log combined
ProxyRequests Off
Order deny,allow
Allow from all
ProxyPass / http://localhost:4000
ProxyPassReverse / http://localhost:4000
</VirtualHost>
然后我重新启动了 apache 服务器并收到此消息:(注意:“xxx.xxx.xxx.xxx”代表我的 VPS 的 IP,例如 15.26.32.9)
service apache2 restart
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/conf.d/xxx.xxx.xxx.xxx.conf:1
该文件包含的全部内容为:
NameVirtualHost xxx.xxx.xxx.xxx:8080
Listen xxx.xxx.xxx.xxx:8080
NameVirtualHost xxx.xxx.xxx.xxx:8433
Listen xxx.xxx.xxx.xxx:8433
当我尝试访问我的网站(使用 Forever 运行的 nodejs 程序)时,我总是收到 403 Forbidden 消息。这是什么原因造成的?
任何帮助都将不胜感激!
答案1
[解决方案]
我从那时起就找到了解决我的问题的方法。
对于遇到同样问题的人,请这样做。只需使用以下命令将端口 80 重定向到您想要使用的任何其他端口:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 4000 答案来源: