我在DigitalOcean上有一个Ubuntu服务器,它托管了几个网站。我刚刚在我的mac上构建了一个mean.js
堆栈应用程序,我计划将其部署到生产环境,从而部署到现有的服务器上(虽然我不知道是否需要创建另一个像{{3}这样的droplet })。
我跟着here安装了node.js
和mongodb
等等。然后,我从github克隆了我自己的应用程序:
sudo git clone https://github.com/softtimur/myapp.git /opt/myapp
cd /opt/myapp
sudo npm install
npm start
因此,在浏览器中,通过输入https://xxx.xx.xx.xx:3000/#/home
,它可以很好地与服务器通信。
现在,我想使用我从GoDaddy购买的域名(即myapp.io
)而不是IP地址与服务器进行通信。
我修改了myapp.io
的DNS中的记录,使其指向IP地址。因此,https://www.myapp.io
可以很好地引导服务器,但是,默认情况下会导致nginx
设置另一个页面。
然后,我按如下方式设置/etc/nginx/sites-available/myapp.io
和/etc/nginx/sites-enabled/myapp.io
:
server {
listen 3000;
listen [::]:3000;
root /opt/myopp/;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name myopp.io;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
client_max_body_size 15M;
}
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
}
重新启动nginx
后,npm start
会返回错误:Port 3000 is already in use
。
有人能告诉我这种方法是否正确?如果是,我怎么能修复错误,例如,nginx配置文件?
编辑1:在/etc/nginx/sites-avaiable/default
,我有
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name xxx.xx.xx.x;
答案 0 :(得分:1)
您要做的是从//www.myapp.io
到//xxx.xx.xx.xx:3000
的反向代理。这是通过侦听端口80(或443)并使用proxy_pass
连接在端口3000上运行的服务来实现的。有关详细信息,请参阅this document。
对于http
服务器,您可以使用:
server {
listen 80;
server_name myopp.io;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Accept-Encoding "";
proxy_set_header Proxy "";
proxy_pass http://127.0.0.1:3000;
}
}
显然,您使用的https
可以通过更改您的服务以在端口3000上使用http
来实现。安装证书并使用nginx
终止SSL。有关详情,请参阅this document。