使用nginx來爲你在一臺服務器部署多個Web Server

最近搗鼓了很多時間,起初想到要弄這個就是由於 node 直接起 server 的方式有點暴力,由於佔用了 80 端口就是真的佔用了,很難在用一個 80 端口掛多個 WebServer。你只能掛載在多個端口上,訪問起來後面還得加個端口,太醜了,因此摸索了一下,用 Nginx 配置了一個多服務結構。這樣就能經過不一樣的子域名來訪問不一樣的應用了!php

大體的結構

本質上就是 nginx 負責轉發進來的請求,那麼轉發的依據就是判斷不一樣的子域名html

STEP 1 Install Nginx

第一步固然是安裝 nginx,各個平臺不太同樣,也無法分享了。我本身的 ubuntu 的環境node

apt-get isntall nginx

STEP 2 Set DNS AND PORT

去你的域名管理商那裏分配你想要的子域名,固然都是 A 記錄並所有解析到你的 VPS 公網 IP 上.nginx

另一個準備就是修改你全部的 NodeWebServer 的端口,能夠按你的愛好設置,可是不要佔用 80 以及 443 端口ubuntu

STEP 3 nginx config Node.js

切換到你的nginx 配置目錄vim

個人目錄位置api

/etc/nginx/

這裏要說明 nginx 是擁有 Include 機制的,他會自動加載 conf.d 目錄下的全部 _.conf_(默認配置下) ,因此咱們並不須要修改 nginx.conf 文件。咱們接下來須要在 conf.d 目錄下建立一系列的配置文件,文件名請使用你相應的工程名,好比 project1.confphp7

若是沒有請手動加入wordpress

include /etc/nginx/conf.d/*.conf;
        # include /etc/nginx/sites-enabled/*; // 最好給他註釋了 默認頁面沒啥用

開始編寫項目配置網站

cd conf.d

touch project1.conf

vim project1.conf

讓咱們編寫詳細的轉發規則

// 這是一個NODE Web Server
// 我已經將這個服務的端口改爲了8000端口
// 當nginx捕獲到訪問域名爲api.yinode.tech的時候
// 就會轉發到本地的8000端口
server{
    server_name api.yinode.tech;
    listen 80;
    location / {
        # proxy_http_version 1.1;
        proxy_set_header Connection "";
        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:8000$request_uri;
        proxy_redirect off;
    }
}

若是你須要轉發 HTTPS,請複製一份上面的內容粘貼到下面,修改監聽端口爲 443,轉發端口就是你監聽的 https 端口!

STEP 4 nginx config PHP

php 的轉發設置會稍有一些不一樣,(默認你已經安裝好了 PHP)

server {
  listen 80;
  root /var/www/longqiyoutian/wordpress; // 你的根目錄
  index index.php;
  server_name dragon.yinode.tech;
  error_page 404 /404.html;
  location ~ \.php$ {
    try_files $uri = 404;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; // 你的fpm地址
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; // 必須填寫,注意順序
  }
}

逐個講解,首先咱們的 Root 目錄會變的重要,Nginx 將會把這個目錄轉發給 FPM 來跑 PHP 代碼,因此不要寫錯了,第二是後面的轉發必須加上 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;這能引導 fpm 進行正確的地址拼接

TIPS:提醒

nginx 和 FPM 的默認啓動用戶都是 www-data,因此你的網站根目錄請務必修改所屬者爲 www-data,而且不要將這個目錄放置到/root/ 下,會出現權限問題,最好複製到/var/www 目錄下,並設置所屬者!

STEP 5 Repeat

重複 3 4 步驟,建立全部你須要的項目配置

STEP 6 Restart nginx

service nginx restart

若是出現報錯,仔細查看信息,去網上找,通常都是由於配置文件格式錯誤。

STEP 7 Run

打開你的網站吧,應該能夠正常運行了!之後新增 Server 其實也只要增長一個對應的 conf 文件,能夠很方便的橫向擴展,而且整個網站訪問起來也會比較美觀!

最後 附上個人博客地址,能夠來看看

Blog

相關文章
相關標籤/搜索