我正在尝试通过create-next-app部署next-js应用,我有一个像这样的自定义快递服务器-
const express = require('express')
const next = require('next')
const dev = process.env.NODE_ENV !== 'production'
const nextApp = next({ dev })
const handle = nextApp.getRequestHandler()
const fs = require('fs')
nextApp.prepare()
.then(() => {
const server = express ()
let port = 3000;
let options = {
key: fs.readFileSync('some key..', 'utf-8'),
cert: fs.readFileSync('some cert..', 'utf-8'),
};
server.get(
...
)
let app = https.createServer(options, server)
.listen((port), function(){
console.log("Express server listening on port " + port);
});
})
.catch((ex) => {
console.error(ex.stack)
process.exit(1)
})
当有人键入URL subdomain.maindomain.com时,我想将此网站部署为网站,因此我保存了两个这样的nginx配置文件-
/ etc / nginx / sites-available / default 和 /etc/nginx/sites-available/subdomain.maindomain.com
默认文件包含此
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name maindomain.com www.maindomain.com;
location / {
# try_files $uri $uri/ =404;
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/maindomain.com/fullchain.pem;$
ssl_certificate_key /etc/letsencrypt/live/maindomain.com/privkey.pe$
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
和subdomain.maindomain.com文件看起来像这样
server {
if ($host = www.subdomain.maindomain.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = subdomain.maindomain.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
root /var/www/subdomain.maindomain.com/somecodefolder/;
index index.html index.htm index.nginx-debian.html;
server_name subdomain.maindomain.com www.subdomain.maindomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
# try_files $uri $uri/ =404;
}
}
如果我输入https://subdomain.maindomain.com:3000,一切正常,我看到我的网站正在运行。但是,当我键入https://subdomain.maindomain.com(不带端口号)时,它什么也没显示。当我只输入网址而不输入端口号时,如何获取所需的内容。我尝试了许多组合,但无法做到。有人请帮助我自2天以来一直在尝试。
答案 0 :(得分:1)
尝试从
更改proxy_pass http://localhost:3000;
进入
proxy_pass http://127.0.0.1:3000;
答案 1 :(得分:1)
尝试使用其他应用程序,以验证您的应用程序中是否存在错误。
将nginx配置为使用域,而不是复杂的端口。只需添加https配置,但主要配置将相同。
127.0.0.1 maindomain.com
127.0.0.1 subdomain.maindomain.com
server {
listen 80;
server_name maindomain.com;
location / {
proxy_pass http://localhost:3000/;
}
}
server {
listen 80;
server_name subdomain.maindomain.com;
location / {
proxy_pass http://localhost:3001/;
}
}
service nginx restart