如何使用nginx
Nginx的優點
安裝:liunx依賴
yum -y install gcc gcc-c++ autoconf pcre-devel make automakeyum -y install wget httpd-tools vimNginx的快速搭建
基于Yum的方式安裝Nginx
yum list | grep nginx如果不存在,或者不是你需要的版本,那我們可以自行配置yum源
[nginx]name=nginx repobaseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/gpgcheck=0enabled=1在終端里輸入
vim /etc/yum.repos.d/nginx.repo修改一下對應的操作系統和版本號,因為我的是centos和7的版本,所以改為這樣。
baseurl=http://nginx.org/packages/centos/7/$basearch/安裝nginx
yum install nginx安裝完成后可以使用命令,來檢測Nginx的版本。
nginx -v這樣的話就把最新版本的Nginx安裝到了Linux系統中了。
Nginx基本配置文件詳講
查看Nginx的安裝目錄
在使用yum安裝完Nginx后,需要知道系統中多了那些文件,它們都安裝到了那里。可以使用下面的命令進行查看:
rpm -ql nginxrpm 是linux的rpm包管理工具,-q 代表詢問模式,-l 代表返回列表,這樣我們就可以找到nginx的所有安裝位置了。
nginx.conf文件解讀
nginx.conf 文件是Nginx總配置文件,在我們搭建服務器時經常調整的文件。
進入etc/nginx目錄下,然后用vim進行打開:
文件的詳細注釋如下:
#運行用戶,默認即是nginx,可以不進行設置 user nginx; #Nginx進程,一般設置為和CPU核數一樣 worker_processes 1; #錯誤日志存放目錄 error_log /var/log/nginx/error.log warn; #進程pid存放位置 pid /var/run/nginx.pid; events {worker_connections 1024; # 單個后臺進程的最大并發數 } http {include /etc/nginx/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 /var/log/nginx/access.log main; #nginx訪問日志存放位置sendfile on; #開啟高效傳輸模式#tcp_nopush on; #減少網絡報文段的數量keepalive_timeout 65; #保持連接的時間,也叫超時時間#gzip on; #開啟gzip壓縮include /etc/nginx/conf.d/*.conf; #包含的子配置項位置和文件default.conf 配置項講解
最后有一個子文件的配置項,那我們打開這個include子文件配置項看一下里邊都有些什么內容。
進入conf.d目錄,然后使用 vim default.conf 進行查看
server {listen 80; #配置監聽端口server_name localhost; //配置域名#charset koi8-r; #access_log /var/log/nginx/host.access.log main;location / {root /usr/share/nginx/html; #服務默認啟動目錄index index.html index.htm; #默認訪問文件}#error_page 404 /404.html; # 配置404頁面# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html; #錯誤狀態碼的顯示頁面,配置后需要重啟location = /50x.html {root /usr/share/nginx/html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {# proxy_pass http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {# deny all;#}}我們的服務目錄放在了/usr/share/nginx/html下,可以使用命令進入看一下目錄下的文件。
cd /usr/share/nginx/htmlls可以看到目錄下面有兩個文件,50x.html 和 index.html。我們可以使用vim進行編輯。
nginx服務器已經可以為html提供服務器了。我們可以打開瀏覽器,訪問ip地址試一試。
阿里云的安全組配置
Nginx服務啟動、停止
使用Linux的組合命令,進行查詢服務的運行狀況。
ps aux | grep nginx啟動nginx
nginx停止 nginx
nginx -s quit重啟
systemctl restart nginx.service查看端口號
在默認情況下,Nginx啟動后會監聽80端口,從而提供HTTP訪問,如果80端口已經被占用則會啟動失敗。我么可以使用netstat -tlnp命令查看端口號的占用情況。
Nginx訪問權限詳講
Nginx訪問簡單用法,deny是禁止訪問,allow是允許訪問。但Nginx的訪問控制還是比較復雜的。
進入 default.conf文件
cd /etc/nginx/conf.dlsvim default.conf設置
location / {deny 11.12.13.49;allow 33.77.202.231;}還可以使用正則表達式:
location ~\.php$ {deny all;}注意點: 先出現的設置會覆蓋后出現的設置(也就是誰先觸發,誰起作用)
Nginx設置虛擬主機
虛擬主機是指在一臺物理主機服務器上劃分出多個磁盤空間,每個磁盤空間都是一個虛擬主機,每臺虛擬主機都可以對外提供Web服務,并且互不干擾。在外界看來,虛擬主機就是一臺獨立的服務器主機,這意味著用戶能夠利用虛擬主機把多個不同域名的網站部署在同一臺服務器上,而不必再為簡歷一個網站單獨購買一臺服務器,既解決了維護服務器技術的難題,同時又極大地節省了服務器硬件成本和相關的維護費用。
基于端口號配置虛擬主機 、 基于IP的虛擬主機 、 配置以域名為劃分的虛擬主機
配置在主文件里etc/nginx/nginx.conf文件里, 也可以配置在子配置文件里etc/nginx/conf.d/default.conf。我這里為了配置方便,就配置在子文件里了。當然你也可以再新建一個文件,只要在conf.d文件夾下就可以了。
修改配置文件中的server選項,這時候就會有兩個server。
server{listen 8001;server_name localhost;root /usr/share/nginx/html/html8001;index index.html;}在瀏覽器中分別訪問地址和帶端口的地址。看到的結果是不同的。
在瀏覽器中訪問http://112.74.164.244:8001了,
你的IP跟這個不一樣,這個IP過幾天就會過期。
Nginx反向代理的設置
訪問
http://nginx.mayouchen.cn然后反向代理到mayouchen.cn這個網站。我們直接到etc/nginx/con.d/8001.conf進行修改。
常用指令:
proxy_set_header :在將客戶端請求發送給后端服務器之前,更改來自客戶端的請求頭信息。proxy_connect_timeout:配置Nginx與后端代理服務器嘗試建立連接的超時時間。proxy_read_timeout : 配置Nginx向后端服務器組發出read請求后,等待相應的超時時間。proxy_send_timeout:配置Nginx向后端服務器組發出write請求后,等待相應的超時時間。proxy_redirect :用于修改后端服務器返回的響應頭中的Location和Refresh。總結
- 上一篇: 短文二篇翻译答谢中书书记承天寺夜游
- 下一篇: typescript接口定义