欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Nginx和pm2部署Next.js項(xiàng)目

 更新時(shí)間:2023年05月23日 16:06:46   作者:T.Y.Bao  
本文主要介紹了使用Nginx和pm2部署Next.js項(xiàng)目,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

概述

只有一臺(tái)服務(wù)器,所以上圖服務(wù)都都在一個(gè)云服務(wù)器上。其中Nginx 分別在用戶和Next服務(wù)之間代理、在Next和后臺(tái)之間代理。

常規(guī)的前臺(tái)頁(yè)面不需要這樣做,例如Vue中直接把build之后的dist文件拷貝到nginxhtml目錄并配置nginx指向即可,但是Next可以做到服務(wù)端渲染(SSR)所以Next的前臺(tái)頁(yè)面實(shí)際上是一個(gè)nodejs服務(wù),所以nginx在這里是代理用戶請(qǐng)求,proxy_pass到這個(gè)nodejs服務(wù)上。

而前后臺(tái)之間的nginx代理屬于反向代理,一般也通過(guò)proxy_passrewrite路徑進(jìn)行代理,我沒(méi)配置這個(gè)。

Next.js配置

在需要SSRpage中需要添加 getStaticPropsgetStaticProps這些function只能寫(xiě)在page文件夾中,不可以在components中用),注意可以設(shè)置revalidate定時(shí)重新build頁(yè)面,這樣頁(yè)面也可以定期更新,如下:

export async function getStaticProps() {
	//后臺(tái)取數(shù)據(jù)
    const result = await queryTimelineList()
    // console.log(result)
    return {
        props: {
            timelineData: result.data,
        },
        // 重新繪制頁(yè)面時(shí)長(zhǎng) 1200 ,單位秒
        revalidate: 1200
    };
}

另外,注意在動(dòng)態(tài)路由的page中,需要設(shè)置fallbacktrue,且頁(yè)面中要增加對(duì)fallbackfalse的處理,否則build的時(shí)候會(huì)報(bào)錯(cuò),如下 一個(gè)名為 [postId].js的page:

const PostId = ({postId, postDetail, recentPosts,curTags}) => {
    const router = useRouter()
	// 注意,這里要處理
    if (router.isFallback) {
        return <div>Loading...</div>
    }
    ...
}
// Fetch data at build time
export async function getStaticProps(context) {
    const postId = context.params.postId
    const
        [postDetailResult,
            recentPostsResult,
            curPostTagsResult] = await Promise.all([
                queryPostDetailByPostId(postId),
                queryRecentPostList(),
                queryTagListByPostId(postId)
            ]
        )
    return {
        props: {
            postId: postId,
            postDetail: postDetailResult?.data,
            recentPosts: recentPostsResult?.data,
            curTags: curPostTagsResult?.data
        },
        revalidate: 300
    };
}
// Specify dynamic routes to pre-render pages based on data.
// The HTML is generated at build time and will be reused on each request.
export async function getStaticPaths() {
    const postIdsResult = await queryPostIdList();
    const postIdList = postIdsResult.data
    return {
        paths: postIdList.map((postId) => {
        	// 這里如果傳的是數(shù)字會(huì)報(bào)錯(cuò),必須轉(zhuǎn)為字符串
            return {params: {postId: postId.toString()}}
        }),
        // 設(shè)置為true
        fallback: true,
    };
}

Nginx配置

完整的nginx.conf配置文件如下:

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  btyhub.site, www.btyhub.site;
		# ssl兩個(gè)文件,放在 nginx的conf目錄中
        ssl_certificate      btyhub.site_bundle.pem;
        ssl_certificate_key  btyhub.site.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
		# 代理到Next的服務(wù),默認(rèn)3000端口,也可以在start的時(shí)候指定
        location / {
            proxy_pass    http://127.0.0.1:3000/;
        }
    }
    # 監(jiān)聽(tīng)普通http請(qǐng)求,重寫(xiě)至https
	server{
		listen 80;
		server_name btyhub.site, www.btyhub.site;
		rewrite ^(.*)$ https://$host$1 permanent;
	}
}

pm2啟動(dòng)

ps:除了使用pm2啟動(dòng)Next服務(wù)外,也可以npm run build之后直接nohup npm run start。

pm2官網(wǎng)文檔

首先要安裝node環(huán)境,安裝完了將命令添加到全局bin中:

# /usr/local/node是我的node安裝目錄
ln -s /usr/local/node/bin/npm /usr/local/bin/
ln -s /usr/local/node/bin/npx /usr/local/bin/
ln -s /usr/local/node/bin/node /usr/local/bin/

其次,全局安裝pm2 并加入全局bin:

npm install -g pm2
ln -s /usr/local/node/bin/pm2 /usr/local/bin/

測(cè)試,是否安裝成功:

pm2 -version

運(yùn)行next服務(wù)

需要將項(xiàng)目源文件上傳至云服務(wù)器:

運(yùn)行npm run build

運(yùn)行pm2 start --name yourappname npm -- start

后記:

域名配置完要隔幾天才可以給網(wǎng)站備案,備案之后才可以通過(guò)域名訪問(wèn),在這之前可以先用ip地址測(cè)試。

到此這篇關(guān)于使用Nginx和pm2部署Next.js項(xiàng)目的文章就介紹到這了,更多相關(guān)Nginx和pm2部署Next.js內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx安全配置全過(guò)程

    Nginx安全配置全過(guò)程

    這篇文章主要介紹了Nginx安全配置全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • nginx配置多個(gè)虛擬主機(jī)vhost的方法示例

    nginx配置多個(gè)虛擬主機(jī)vhost的方法示例

    這篇文章主要介紹了nginx配置多個(gè)虛擬主機(jī)vhost的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • nginx tcp負(fù)載均衡的具體實(shí)現(xiàn)

    nginx tcp負(fù)載均衡的具體實(shí)現(xiàn)

    Nginx是比較不錯(cuò)的開(kāi)源Web服務(wù)器之一,它也可以用作TCP和UDP負(fù)載均衡器,本文主要介紹了nginx tcp負(fù)載均衡的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • Nginx的安裝和多域名配置的實(shí)現(xiàn)方法

    Nginx的安裝和多域名配置的實(shí)現(xiàn)方法

    這篇文章主要介紹了Nginx的安裝和多域名配置的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • nginx禁止直接通過(guò)ip進(jìn)行訪問(wèn)并跳轉(zhuǎn)到自定義500頁(yè)面的操作

    nginx禁止直接通過(guò)ip進(jìn)行訪問(wèn)并跳轉(zhuǎn)到自定義500頁(yè)面的操作

    這篇文章主要介紹了nginx禁止直接通過(guò)ip進(jìn)行訪問(wèn)并跳轉(zhuǎn)到自定義500頁(yè)面的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • Nginx實(shí)現(xiàn)404頁(yè)面的配置方法的兩種方法

    Nginx實(shí)現(xiàn)404頁(yè)面的配置方法的兩種方法

    在使用Nginx作為Web服務(wù)器時(shí),配置404頁(yè)面是一項(xiàng)基本需求,本文介紹了兩種配置404頁(yè)面的方法,這兩種方法各有特點(diǎn),可以根據(jù)實(shí)際需求選擇適合的配置方式
    2024-09-09
  • Django+Nginx+uwsgi服務(wù)器部署

    Django+Nginx+uwsgi服務(wù)器部署

    這篇文章介紹了Django+Nginx+uwsgi服務(wù)器部署的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 解決Nginx location中配置proxy_pass轉(zhuǎn)發(fā)時(shí)斜線‘/‘導(dǎo)致404問(wèn)題

    解決Nginx location中配置proxy_pass轉(zhuǎn)發(fā)時(shí)斜線‘/‘導(dǎo)致404問(wèn)題

    這篇文章主要介紹了解決Nginx location中配置proxy_pass轉(zhuǎn)發(fā)時(shí)斜線‘/‘導(dǎo)致404問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • keepalived+nginx實(shí)現(xiàn)網(wǎng)站高可用性

    keepalived+nginx實(shí)現(xiàn)網(wǎng)站高可用性

    本文主要介紹了keepalived+nginx實(shí)現(xiàn)網(wǎng)站高可用性,包含配置Keepalived實(shí)現(xiàn)雙主熱備集群架構(gòu),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • nginx proxy_set_header設(shè)置自定義header的實(shí)現(xiàn)步驟

    nginx proxy_set_header設(shè)置自定義header的實(shí)現(xiàn)步驟

    在Nginx中,使用?proxy_set_header指令可以自定義header并在反向代理時(shí)傳遞到后端服務(wù)器,本文就來(lái)詳細(xì)的介紹一下,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05

最新評(píng)論