我備案了個域名,買了一個阿里雲服務器,想要搭建幾個本身的網站,不免要打仗 nginx。
那末我用 nginx 來幹嗎呢:
- 靜態資本反向代辦
- 將域名泛剖析到服務器以後,經由過程 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 設置見效了。