我正尝试在同一服务器上运行node js
和apache
我正在尝试将所有请求传递到特定端口(例如:example.com:80到example.com:3000)。
为此,我更改了位于“ /etc/httpd/conf/httpd.conf
”中的httpd.conf文件
在末尾添加了这些行
<VirtualHost *:80>
ServerName mysite.com
ProxyPreserveHost on
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
,然后使用sudo service httpd restart
但没有任何改变。
还有2个httpd.conf文件可用->
/usr/local/apache/conf/httpd.conf
/etc/httpd/conf/httpd.conf
/etc/apache2/conf/httpd.conf
在/etc/apache2/conf/httpd.conf
文件的末尾,我看到了 this:
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# DO NOT EDIT. AUTOMATICALLY GENERATED. USE INCLUDE FILES IF YOU NEED TO MAKE A CHANGE
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
我无法理解USE INCLUDE FILES IF YOU NEED TO MAKE A CHANGE
行。
我该怎么办??
答案 0 :(得分:3)
我已经有一段时间没有使用Apache2了,因为我通常使用Nginx代理我的Node.JS应用程序。
您应该从/etc/apache2/sites-available/000-default.conf
复制默认站点配置。 (命令:sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mysite.com.conf
)。
然后将您在那里的配置放入新文件中。编辑需要编辑的内容,然后通过运行sudo a2ensite mysite.com.conf
启用新的站点配置。然后通过运行sudo service apache2 restart
重新启动apache2进程。
您现在应该可以对其进行测试,并且如果您的配置语法正确,它应该可以工作。
答案 1 :(得分:0)
与Apache2相比,我个人更喜欢Nginx,但是您可以使用其中任何一个。
对于apache2,您应该启用proxy
和proxy_http
模块:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo service apache2 restart
然后,您应该为apache添加一个配置文件,通常名为/etc/apache2/sites-available/example.com.conf
:
(如果不需要,您可以删除目录部分)
<VirtualHost *:80>
ServerName example.com
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location / >
ProxyPass http://127.0.0.1:3000
ProxyPassReverse http://127.0.0.1:3000
</Location>
<Directory "/var/www/example.com/html">
AllowOverride All
</Directory>
</VirtualHost>
然后启用配置并使用以下命令重新启动apache2:
sudo a2ensite example.com
sudo services apache2 restart
对于Nginx配置,您应该将这些行添加到/etc/nginx/site-available/your-app.conf
:
upstream app {
server 0.0.0.0:3000;
}
server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
proxy_pass http://app/;
proxy_set_header Host $http_host;
}
access_log /var/log/nginx/app-access.log;
error_log /var/log/nginx/app-error.log info;
}
然后您应该运行:
sudo ln -s /etc/nginx/sites-available/your-app.conf /etc/nginx/sites-enabled/
然后:
# remove default config symlink from sites-enabled dir
rm /etc/nginx/sites-enabled/default
# test if config is OK:
sudo nginx -t
# restart the nginx:
sudo systemctl restart nginx
PS:我使用了this链接中的apache conf示例