<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Nginx("engine x")是一款是由俄羅斯的程式設計師Igor Sysoev所開發高效能的 Web和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。
三大WEB伺服器:apache, Nginx, lighttpd之一。在高連線並行的情況下,Nginx是Apache伺服器不錯的替代品。
官方網址:http://nginx.org/en/download.html
官網提供三種版本:
Nginx官網提供了三個型別的版本
Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以說是開發版
Stable version:最新穩定版,生產環境上建議使用的版本
Legacy versions:遺留的老版本的穩定版
sudo apt install nginx
service nginx start # 啟動nginx service nginx reload # 重新載入nginx組態檔
在瀏覽器輸入你的ip地址,如果出現Wellcome to nginx 那麼就是設定成功。
另外兩個命令
nginx -s reopen # 重啟 Nginx nginx -s stop # 停止 Nginx
~$ nginx -v nginx version: nginx/1.14.0 (Ubuntu)
... # 全域性塊。設定影響nginx全域性的指令。 events { # events塊。設定影響nginx伺服器或與使用者的網路連線。 ... } http # http塊。可以巢狀多個server,設定代理,快取,紀錄檔定義等絕大多數功能和第三方模組的設定。 { ... # http全域性塊 server # server塊。設定虛擬主機的相關引數,一個http中可以有多個server。 { ... # server全域性塊 location [PATTERN] # location塊。設定請求的路由,以及各種頁面的處理情況。 { ... } location [PATTERN] { ... } } server { ... } ... # http全域性塊 }
## # You should look at the following URL's in order to grasp a solid understanding # of Nginx configuration files in order to fully unleash the power of Nginx. # https://www.nginx.com/resources/wiki/start/ # https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/ # https://wiki.debian.org/Nginx/DirectoryStructure # # In most cases, administrators will remove this file from sites-enabled/ and # leave it as reference inside of sites-available where it will continue to be # updated by the nginx packaging team. # # This file will automatically load configuration files provided by other # applications, such as Drupal or Wordpress. These applications will be made # available underneath a path with that package name, such as /drupal8. # # Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples. ## # Default server configuration # server { listen 80 default_server; listen [::]:80 default_server; # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Note: You should disable gzip for SSL traffic. # See: https://bugs.debian.org/773332 # # Read up on ssl_ciphers to ensure a secure configuration. # See: https://bugs.debian.org/765782 # # Self signed certs generated by the ssl-cert package # Don't use them in a production server! # # include snippets/snakeoil.conf; root /var/www/html; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name _; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } # pass PHP scripts to FastCGI server # #location ~ .php$ { # include snippets/fastcgi-php.conf; # # # With php-fpm (or other unix sockets): # fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /.ht { # deny all; #} } # Virtual Host configuration for example.com # # You can move that to a different file under sites-available/ and symlink that # to sites-enabled/ to enable it. # #server { # listen 80; # listen [::]:80; # # server_name example.com; # # root /var/www/example.com; # index index.html; # # location / { # try_files $uri $uri/ =404; # } #}
########### 每個指令必須有分號結束。################# #user administrator administrators; #設定使用者或者組,預設為nobody nobody。 #worker_processes 2; #允許生成的程序數,預設為1 #pid /nginx/pid/nginx.pid; #指定nginx程序執行檔案存放地址 error_log log/error.log debug; #制定紀錄檔路徑,級別。這個設定可以放入全域性塊,http塊,server塊,級別以此為:debug|info|notice|warn|error|crit|alert|emerg events { accept_mutex on; #設定網路連線序列化,防止驚群現象發生,預設為on multi_accept on; #設定一個程序是否同時接受多個網路連線,預設為off #use epoll; #事件驅動模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport worker_connections 1024; #最大連線數,預設為512 } http { include mime.types; #副檔名與檔案型別對映表 default_type application/octet-stream; #預設檔案型別,預設為text/plain #access_log off; #取消服務紀錄檔 log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定義格式 access_log log/access.log myFormat; #combined為紀錄檔格式的預設值 sendfile on; #允許sendfile方式傳輸檔案,預設為off,可以在http塊,server塊,location塊。 sendfile_max_chunk 100k; #每個程序每次呼叫傳輸數量不能大於設定的值,預設為0,即不設上限。 keepalive_timeout 65; #連線超時時間,預設為75s,可以在http,server,location塊。 upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333 backup; #熱備 } error_page 404 https://www.baidu.com; #錯誤頁 server { keepalive_requests 120; #單連線請求上限次數。 listen 80; #監聽埠 server_name 127.0.0.1; #監聽地址 location ~*^.+$ { #請求的url過濾,正則匹配,~為區分大小寫,~*為不區分大小寫。 #root path; #根目錄 #index vv.txt; #設定預設頁 proxy_pass http://mysvr; #請求轉向mysvr 定義的伺服器列表 deny 127.0.0.1; #拒絕的ip allow 172.18.5.54; #允許的ip } } }
#下面是server虛擬主機的設定段 server { listen 80;#監聽埠 server_name localhost;#域名 index index.html index.htm index.php; root /usr/local/webserver/nginx/html;#站點目錄 location ~ .*.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } location ~ .*.(gif|jpg|jpeg|png|bmp|swf|ico)$ { expires 30d; #access_log off; } location ~ .*.(js|css)?$ { expires 15d; #access_log off; } access_log off; }
root@ubuntu: nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
存取連結是:http://localhost:88/test1/test.php 網站路徑是:/var/www/html $host:localhost $server_port:88 $request_uri:<a href="http://localhost:88/test1/test.php" rel="external nofollow" target="_blank">http:</a>//localhost:88/test1/test.php $document_uri:/test1/test.php $document_root:/var/www/html $request_filename:/var/www/html/test1/test.php
首先,Nginx是一個HTTP伺服器,可以將伺服器上的靜態檔案(如HTML、圖片)通過HTTP協定展現給使用者端。
設定:
server { listen 80; # 埠 server_name localhost 192.168.1.100; # 域名 location / { # 代表這是專案根目錄 root /usr/share/nginx/www; # 虛擬目錄 } }
什麼是反向代理?
使用者端本來可以直接通過HTTP協定存取某網站應用伺服器,如果網站管理員在中間加上一個Nginx,使用者端請求Nginx,Nginx請求應用伺服器,然後將結果返回給使用者端,此時Nginx就是反向代理伺服器。
反向代理設定:
server { listen 80; location / { proxy_pass http://192.168.0.112:8080; # 應用伺服器HTTP地址 } }
既然伺服器可以直接HTTP存取,為什麼要在中間加上一個反向代理,不是多此一舉嗎?反向代理有什麼作用?繼續往下看,下面的負載均衡、虛擬主機,都基於反向代理實現,當然反向代理的功能也不僅僅是這些。
當網站存取量非常大,也攤上事兒了。因為網站越來越慢,一臺伺服器已經不夠用了。於是將相同的應用部署在多臺伺服器上,將大量使用者的請求分配給多臺機器處理。同時帶來的好處是,其中一臺伺服器萬一掛了,只要還有其他伺服器正常執行,就不會影響使用者使用。Nginx可以通過反向代理來實現負載均衡。
負載均衡設定:
upstream myapp { server 192.168.0.111:8080; # 應用伺服器1 server 192.168.0.112:8080; # 應用伺服器2 } server { listen 80; location / { proxy_pass http://myweb; } }
有的網站存取量大,需要負載均衡。然而並不是所有網站都如此出色,有的網站,由於存取量太小,需要節省成本,將多個網站部署在同一臺伺服器上。
例如將www.aaa.com和www.bbb.com兩個網站部署在同一臺伺服器上,兩個域名解析到同一個IP地址,但是使用者通過兩個域名卻可以開啟兩個完全不同的網站,互相不影響,就像存取兩個伺服器一樣,所以叫兩個虛擬主機。
虛擬主機設定:
server { listen 80 default_server; server_name _; return 444; # 過濾其他域名的請求,返回444狀態碼 } server { listen 80; server_name www.aaa.com; # www.aaa.com域名 location / { proxy_pass http://localhost:8080; # 對應埠號8080 } } server { listen 80; server_name www.bbb.com; # www.bbb.com域名 location / { proxy_pass http://localhost:8081; # 對應埠號8081 } }
在伺服器8080和8081分別開了一個應用,使用者端通過不同的域名存取,根據server_name可以反向代理到對應的應用伺服器。
虛擬主機的原理是通過HTTP請求頭中的Host是否匹配server_name來實現的,有興趣的同學可以研究一下HTTP協定。
另外,server_name設定還可以過濾有人惡意將某些域名指向你的主機伺服器。
到此這篇關於Ubuntu下搭建與設定Nginx服務的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45