關於 nginx 前端曉得這些就夠了

我備案了個域名,買了一個阿里雲服務器,想要搭建幾個本身的網站,不免要打仗 nginx

那末我用 nginx 來幹嗎呢:

  1. 靜態資本反向代辦
  2. 將域名泛剖析到服務器以後,經由過程 nginx 來給差別的二級域名分派服務器上的順序。

1、裝置 nginx

1.1、centos7

yum install -y nginx

1.2、windows

到官網下載,裝置包,解壓即可運用:官網

1.3、centos7 中 nginx 常用命令

# 開機啟動
systemctl enable nginx.service

# 啟動
systemctl start nginx.service

# 運用某個設置文件啟動(要先封閉 ngxin,不然會報錯的)
nginx -c /etc/nginx/nginx.conf

# 封閉(如果如許封閉不了的話,就把 nginx 歷程給殺掉)
nginx -s stop

# 檢察 nginx 的歷程 id
ps -ef | grep nginx

# 殺死歷程(比方殺死歷程1234)
kill -9 1234

nginx 的默許設置文件是:/etc/nginx/nginx.conf

這個設置文件會自動讀取:/etc/nginx/conf.d/ 文件夾下的一切 .conf 文件。

如果你寫了個網站,須要用到 nginx ,那末你就把設置文件丟到 /etc/nginx/conf.d/ 文件夾下,然後重啟 nginx 就好了:

nginx -s stop
nginx -c /etc/nginx/nginx.conf

2、nginx 設置(反向代辦設置 & 二級域名)

2.1 設置文件

假定我們有兩個網站:
www.example.com
blog.example.com

它們離別有兩個 ngxin 設置文件放在:
/home/www.example.com/www.example.com.nginx.conf
/home/blog.example.com/blog.example.com.nginx.conf

服務器對外開放 80 端口,兩個網站對應的順序端口離別為:

www.example.com 順序 8000
www.example.com 靜態資本 8080

blog.example.com 順序 8001
blog.example.com 靜態資本 8081

那末他們的設置內容離別為:

# /home/www.example.com/www.example.com.nginx.conf
server {
    # 服務器對外只監聽 80 端口
    listen 80;
    # 當 80 端口監聽到了來自 www.example.com 的要求
    server_name www.example.com;
    # 那末把這個要求轉到 http://localhost:8080
    location / {
        proxy_pass http://localhost:8080;
    }
}
server {
    # 監聽到 8080 端口有人提議要求(實在就是上面轉過來的↑,用戶不能直接接見 8080 端口的)
    listen 8080;
    # 只允許本機接見
    server_name localhost;
    # 順序根目次
    root /home/www.example.com;
    # 默許的網頁文件
    index index.html index.htm;
    # 婚配一切 uri (如果 url 為:http://www.example.com/hehe,那末 uri 為:/hehe)
    location / {
        # 我們的順序實際上是在 8000 端口上
        proxy_pass http://localhost:8000$request_uri;

        # 下面這一大堆,欲知概況本身查
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }
    # 婚配首頁
    location = / {
        proxy_pass http://localhost:8000;
    }
    # 婚配 /**.** 末端的 uri,而且不是 /**.html、/**.htm
    location ~* ^.+\/[^\/]+(?=\.)([^\/](?!(html|htm)))+$ {
      # 婚配到的都定位到靜態資本目次里
      root /home/www.example.com/static;
      etag         on;
      expires      max;
    }
}
# /home/blog.example.com/blog.example.com.nginx.conf
server {
    # 服務器對外只監聽 80 端口
    listen 80;
    # 當 80 端口監聽到了來自 blog.example.com 的要求
    server_name blog.example.com;
    # 那末把這個要求轉到 http://localhost:8081
    location / {
        proxy_pass http://localhost:8081;
    }
}
server {
    # 監聽到 8081 端口有人提議要求(實在就是上面轉過來的↑,用戶不能直接接見 8081 端口的)
    listen 8081;
    # 只允許本機接見
    server_name localhost;
    # 順序根目次
    root /home/blog.example.com;
    # 默許的網頁文件
    index index.html index.htm;
    # 婚配一切 uri (如果 url 為:http://blog.example.com/hehe,那末 uri 為:/hehe)
    location / {
        # 我們的順序實際上是在 8001 端口上
        proxy_pass http://localhost:8001$request_uri;

        # 下面這一大堆,欲知概況本身查
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }
    # 婚配首頁
    location = / {
        proxy_pass http://localhost:8001;
    }
    # 婚配 /**.** 末端的 uri,而且不是 /**.html、/**.htm
    location ~* ^.+\/[^\/]+(?=\.)([^\/](?!(html|htm)))+$ {
      # 婚配到的都定位到靜態資本目次里
      root /home/blog.example.com/static;
      etag         on;
      expires      max;
    }
}

注重看兩個設置的區分。

2.2 建立軟鏈接

如果我們每一個網站順序放在一個文件夾里,該順序的 nginx 設置文件也應當放在這個文件夾里才輕易治理。但前面提到,我們須要把設置文件丟到 /etc/nginx/conf.d/ 文件夾下,怎樣才能使這個設置文件既在順敘文件夾下,又在 /etc/nginx/conf.d/文件夾下呢?

如果我們在順敘文件夾下有一個 ngxin 設置文件:/home/www.example.com/www.example.com.nginx.conf

我們須要給這個文件建立一個軟鏈接到 /etc/nginx/conf.d/ 下:

ln -s /home/example/example.nginx.conf /etc/nginx/conf.d/www.example.com.nginx.conf

如許操縱以後,當我們改順敘文件夾下的設置文件,/etc/nginx/conf.d/ 下與之對應的設置文件也會被修正,修正後重啟 nginx 就可以使新的 ngxin 設置見效了。

    原文作者:6666
    原文地址: https://segmentfault.com/a/1190000014740383
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞