NodeJS與Nginx共用80端口

Apache和Nginx通常都會使用默認的HTTP請求的80端口。但我們知道,一旦開啓了Nginx後,NodeJS再去監聽80端口就會發生錯誤。那麼,我們該如何解決這個問題呢?

接下來,以最近發佈的一個個人博站爲例。


在我的阿里雲服務器上已經開啓了Nginx服務,並且該域名下已經有對應的項目在跑。而此時,我的博站是採用NodeJS編寫的,監聽的端口是8090端口。要實現NodeJS能夠監聽到80端口,可以採取的一種簡單的方法是,將80端口反向代理到8090的端口上,這樣,所有發送到80端口的請求都會重定向到8090;


首先,我在阿里雲的域名解析上先配置了kingsley.allenzhan.top 這個子域名。然後在我的Nginx裏的vhost裏創建了一個king.conf文件,並寫入相應的配置。

如下



其中

location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://127.0.0.1:8090/;
            proxy_set_header X-NginX-Proxy true;
        }

是將發往 kingsley.allenzhan.top 的請求 重定向到 NodeJS監聽的 8090 端口上。


但是,我們會發現,路由是成功了,但是靜態文件卻找不到了。所以,還需要配置以下的路徑

 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            root    /application/nginx/html/king/blogs/;
            expires 30d;

        }

 location ~ .*\.(js|css)?$
        {
            root    /application/nginx/html/king/blogs/;
            expires 12h;
        }

/application/nginx/html/king/blogs/這個路徑是存放博客項目的靜態資源的位置。


寫入配置後,保存。然後使用命令nginx -s reload 重啓Nginx。這樣,再訪問kingsley.allenzhan.top就可以看到我們不用再輸入端口8090 也能夠實用默認的80端口訪問我們的項目了。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章