摘要:安裝這里持續更新修正是一款面向性能設計的服務器,能反向代理,和郵件相關,,的協議鏈接。并且提供了負載均衡以及緩存。所以關于,有這些標簽異步事件模塊化高性能高并發反向代理負載均衡系統版本安裝安裝依賴重定向支持和支持,如果不需要可以不安裝。
Nginx 安裝
這里持續更新修正
Nginx 是一款面向性能設計的 HTTP 服務器,能反向代理 HTTP,HTTPS 和郵件相關(SMTP,POP3,IMAP)的協議鏈接。并且提供了負載均衡以及 HTTP 緩存。它的設計充分使用異步事件模型,削減上下文調度的開銷,提高服務器并發能力。采用了模塊化設計,提供了豐富模塊的第三方模塊。
所以關于 Nginx,有這些標簽:「異步」「事件」「模塊化」「高性能」「高并發」「反向代理」「負載均衡」
Linux系統:Centos 7 x64
Nginx版本:1.11.5
prce(重定向支持)和openssl(https支持,如果不需要https可以不安裝。)
yum -y install pcre* yum -y install openssl*
CentOS 6.5 我安裝的時候是選擇的“基本服務器”,默認這兩個包都沒安裝全,所以這兩個都運行安裝即可。
下載wget http://nginx.org/download/nginx-1.11.5.tar.gz # 如果沒有安裝wget # 下載已編譯版本 $ yum install wget編譯安裝
然后進入目錄編譯安裝,configure參數說明
cd nginx-1.11.5 ./configure
安裝報錯誤的話比如:“C compiler cc is not found”,這個就是缺少編譯環境,安裝一下就可以了 yum -y install gcc make gcc-c++ openssl-devel wget
如果沒有error信息,就可以執行下邊的安裝了:
make make installnginx測試
運行下面命令會出現兩個結果
./nginx -t # nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok # nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful開機自啟動
編輯 vi /lib/systemd/system/nginx.service 文件,沒有創建一個 touch nginx.service 然后將如下內容根據具體情況進行修改后,添加到nginx.service文件中:
[Unit] Description=nginx1.11.5 After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/var/run/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
設置開機啟動,使配置生效:
systemctl enable nginx.service運維 服務管理
# 啟動 /usr/local/nginx/sbin/nginx # 重啟 /usr/local/nginx/sbin/nginx -s reload # 關閉進程 /usr/local/nginx/sbin/nginx -s stop # 平滑關閉nginx /usr/local/nginx/sbin/nginx -s quit # 查看nginx的安裝狀態, /usr/local/nginx/sbin/nginx -V
關閉防火墻,或者添加防火墻規則就可以測試了
service iptables stop
或者編輯配置文件:
vi /etc/sysconfig/iptables
添加這樣一條開放80端口的規則后保存:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
重啟服務即可:
service iptables restart重啟服務防火墻報錯解決
service iptables restart # Redirecting to /bin/systemctl restart iptables.service # Failed to restart iptables.service: Unit iptables.service failed to load: No such file or directory.
在CentOS 7或RHEL 7或Fedora中防火墻由 firewalld 來管理,當然你可以還原傳統的管理方式。或則使用新的命令進行管理。
假如采用傳統請執行一下命令:
# 傳統命令 systemctl stop firewalld systemctl mask firewalld
# 安裝命令 yum install iptables-services systemctl enable iptables service iptables restartnginx卸載
如果通過yum安裝,使用下面命令安裝。
yum remove nginx
編譯安裝,刪除/usr/local/nginx目錄即可
如果配置了自啟動腳本,也需要刪除。
參數 | 說明 |
---|---|
--prefix= |
Nginx安裝路徑。如果沒有指定,默認為 /usr/local/nginx。 |
--sbin-path= |
Nginx可執行文件安裝路徑。只能安裝時指定,如果沒有指定,默認為 |
--conf-path= |
在沒有給定-c選項下默認的nginx.conf的路徑。如果沒有指定,默認為 |
--pid-path= |
在nginx.conf中沒有指定pid指令的情況下,默認的nginx.pid的路徑。如果沒有指定,默認為 |
--lock-path= |
nginx.lock文件的路徑。 |
--error-log-path= |
在nginx.conf中沒有指定error_log指令的情況下,默認的錯誤日志的路徑。如果沒有指定,默認為 |
--http-log-path= |
在nginx.conf中沒有指定access_log指令的情況下,默認的訪問日志的路徑。如果沒有指定,默認為 |
--user= |
在nginx.conf中沒有指定user指令的情況下,默認的nginx使用的用戶。如果沒有指定,默認為 nobody。 |
--group= |
在nginx.conf中沒有指定user指令的情況下,默認的nginx使用的組。如果沒有指定,默認為 nobody。 |
--builddir=DIR | 指定編譯的目錄 |
--with-rtsig_module | 啟用 rtsig 模塊 |
--with-select_module --without-select_module | 允許或不允許開啟SELECT模式,如果 configure 沒有找到更合適的模式,比如:kqueue(sun os),epoll (linux kenel 2.6+), rtsig(- 實時信號)或者/dev/poll(一種類似select的模式,底層實現與SELECT基本相 同,都是采用輪訓方法) SELECT模式將是默認安裝模式 |
--with-poll_module --without-poll_module | Whether or not to enable the poll module. This module is enabled by, default if a more suitable method such as kqueue, epoll, rtsig or /dev/poll is not discovered by configure. |
--with-http_ssl_module | Enable ngx_http_ssl_module. Enables SSL support and the ability to handle HTTPS requests. Requires OpenSSL. On Debian, this is libssl-dev. 開啟HTTP SSL模塊,使NGINX可以支持HTTPS請求。這個模塊需要已經安裝了OPENSSL,在DEBIAN上是libssl |
--with-http_realip_module | 啟用 ngx_http_realip_module |
--with-http_addition_module | 啟用 ngx_http_addition_module |
--with-http_sub_module | 啟用 ngx_http_sub_module |
--with-http_dav_module | 啟用 ngx_http_dav_module |
--with-http_flv_module | 啟用 ngx_http_flv_module |
--with-http_stub_status_module | 啟用 "server status" 頁 |
--without-http_charset_module | 禁用 ngx_http_charset_module |
--without-http_gzip_module | 禁用 ngx_http_gzip_module. 如果啟用,需要 zlib 。 |
--without-http_ssi_module | 禁用 ngx_http_ssi_module |
--without-http_userid_module | 禁用 ngx_http_userid_module |
--without-http_access_module | 禁用 ngx_http_access_module |
--without-http_auth_basic_module | 禁用 ngx_http_auth_basic_module |
--without-http_autoindex_module | 禁用 ngx_http_autoindex_module |
--without-http_geo_module | 禁用 ngx_http_geo_module |
--without-http_map_module | 禁用 ngx_http_map_module |
--without-http_referer_module | 禁用 ngx_http_referer_module |
--without-http_rewrite_module | 禁用 ngx_http_rewrite_module. 如果啟用需要 PCRE 。 |
--without-http_proxy_module | 禁用 ngx_http_proxy_module |
--without-http_fastcgi_module | 禁用 ngx_http_fastcgi_module |
--without-http_memcached_module | 禁用 ngx_http_memcached_module |
--without-http_limit_zone_module | 禁用 ngx_http_limit_zone_module |
--without-http_empty_gif_module | 禁用 ngx_http_empty_gif_module |
--without-http_browser_module | 禁用 ngx_http_browser_module |
--without-http_upstream_ip_hash_module | 禁用 ngx_http_upstream_ip_hash_module |
--with-http_perl_module | 啟用 ngx_http_perl_module |
--with-perl_modules_path=PATH | 指定 perl 模塊的路徑 |
--with-perl=PATH | 指定 perl 執行文件的路徑 |
--http-log-path=PATH | Set path to the http access log |
--http-client-body-temp-path=PATH | Set path to the http client request body temporary files |
--http-proxy-temp-path=PATH | Set path to the http proxy temporary files |
--http-fastcgi-temp-path=PATH | Set path to the http fastcgi temporary files |
--without-http | 禁用 HTTP server |
--with-mail | 啟用 IMAP4/POP3/SMTP 代理模塊 |
--with-mail_ssl_module | 啟用 ngx_mail_ssl_module |
--with-cc=PATH | 指定 C 編譯器的路徑 |
--with-cpp=PATH | 指定 C 預處理器的路徑 |
--with-cc-opt=OPTIONS | Additional parameters which will be added to the variable CFLAGS. With the use of the system library PCRE in FreeBSD, it is necessary to indicate --with-cc-opt="-I /usr/local/include". If we are using select() and it is necessary to increase the number of file descriptors, then this also can be assigned here: --with-cc-opt="-D FD_SETSIZE=2048". |
--with-ld-opt=OPTIONS | Additional parameters passed to the linker. With the use of the system library PCRE in - FreeBSD, it is necessary to indicate --with-ld-opt="-L /usr/local/lib". |
--with-cpu-opt=CPU | 為特定的 CPU 編譯,有效的值包括:pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64 |
--without-pcre | 禁止 PCRE 庫的使用。同時也會禁止 HTTP rewrite 模塊。在 "location" 配置指令中的正則表達式也需要 PCRE 。 |
--with-pcre=DIR | 指定 PCRE 庫的源代碼的路徑。 |
--with-pcre-opt=OPTIONS | Set additional options for PCRE building. |
--with-md5=DIR | Set path to md5 library sources. |
--with-md5-opt=OPTIONS | Set additional options for md5 building. |
--with-md5-asm | Use md5 assembler sources. |
--with-sha1=DIR | Set path to sha1 library sources. |
--with-sha1-opt=OPTIONS | Set additional options for sha1 building. |
--with-sha1-asm | Use sha1 assembler sources. |
--with-zlib=DIR | Set path to zlib library sources. |
--with-zlib-opt=OPTIONS | Set additional options for zlib building. |
--with-zlib-asm=CPU | Use zlib assembler sources optimized for specified CPU, valid values are: pentium, pentiumpro |
--with-openssl=DIR | Set path to OpenSSL library sources |
--with-openssl-opt=OPTIONS | Set additional options for OpenSSL building |
--with-debug | 啟用調試日志 |
--add-module=PATH | Add in a third-party module found in directory PATH |
在Centos 默認配置文件在 /usr/local/nginx-1.5.1/conf/nginx.conf 我們要在這里配置一些文件。nginx.conf是主配置文件,由若干個部分組成,每個大括號{}表示一個部分。每一行指令都由分號結束;,標志著一行的結束。
配置文件nginx 的配置系統由一個主配置文件和其他一些輔助的配置文件構成。這些配置文件均是純文本文件,全部位于 nginx 安裝目錄下的 conf 目錄下。
指令由 nginx 的各個模塊提供,不同的模塊會提供不同的指令來實現配置。
指令除了 Key-Value 的形式,還有作用域指令。
nginx.conf 中的配置信息,根據其邏輯上的意義,對它們進行了分類,也就是分成了多個作用域,或者稱之為配置指令上下文。不同的作用域含有一個或者多個配置項。
下面的這些上下文指令是用的比較多:
Directive | Description | Contains Directive |
---|---|---|
main | nginx 在運行時與具體業務功能(比如 http 服務或者 email 服務代理)無關的一些參數,比如工作進程數,運行的身份等。 | user, worker_processes, error_log, events, http, mail |
http | 與提供 http 服務相關的一些配置參數。例如:是否使用 keepalive 啊,是否使用 gzip 進行壓縮等。 | server |
server | http 服務上支持若干虛擬主機。每個虛擬主機一個對應的 server 配置項,配置項里面包含該虛擬主機相關的配置。在提供 mail 服務的代理時,也可以建立若干 server. 每個 server 通過監聽的地址來區分。 | listen, server_name, access_log, location, protocol, proxy, smtp_auth, xclient |
location | http 服務中,某些特定的 URL 對應的一系列配置項。 | index, root |
實現 email 相關的 SMTP/IMAP/POP3 代理時,共享的一些配置項(因為可能實現多個代理,工作在多個監聽地址上)。 | server, http, imap_capabilities | |
include | 以便增強配置文件的可讀性,使得部分配置文件可以重新使用。 | - |
valid_referers | 用來校驗Http請求頭Referer是否有效。 | - |
try_files | 用在server部分,不過最常見的還是用在location部分,它會按照給定的參數順序進行嘗試,第一個被匹配到的將會被使用。 | - |
if | 當在location塊中使用if指令,在某些情況下它并不按照預期運行,一般來說避免使用if指令。 | - |
例如我們再 nginx.conf 里面引用兩個配置 vhost/example.com.conf 和 vhost/gitlab.com.conf 它們都被放在一個我自己新建的目錄 vhost 下面。nginx.conf 配置如下:
worker_processes 1; events { worker_connections 1024; } http { include 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 logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } include vhost/example.com.conf; include vhost/gitlab.com.conf; }
簡單的配置: example.com.conf
server { #偵聽的80端口 listen 80; server_name baidu.com app.baidu.com; # 這里指定域名 index index.html index.htm; # 這里指定默認入口頁面 root /home/www/app.baidu.com; # 這里指定目錄 }內置預定義變量
Nginx提供了許多預定義的變量,也可以通過使用set來設置變量。你可以在if中使用預定義變量,也可以將它們傳遞給代理服務器。以下是一些常見的預定義變量,更多詳見
變量名稱 | 值 |
---|---|
$args_name | 在請求中的name參數 |
$args | 所有請求參數 |
$query_string | $args的別名 |
$content_length | 請求頭Content-Length的值 |
$content_type | 請求頭Content-Type的值 |
$host | 如果當前有Host,則為請求頭Host的值;如果沒有這個頭,那么該值等于匹配該請求的server_name的值 |
$remote_addr | 客戶端的IP地址 |
$request | 完整的請求,從客戶端收到,包括Http請求方法、URI、Http協議、頭、請求體 |
$request_uri | 完整請求的URI,從客戶端來的請求,包括參數 |
$scheme | 當前請求的協議 |
$uri | 當前請求的標準化URI |
反向代理是一個Web服務器,它接受客戶端的連接請求,然后將請求轉發給上游服務器,并將從服務器得到的結果返回給連接的客戶端。下面簡單的反向代理的例子:
server { listen 80; server_name localhost; client_max_body_size 1024M; # 允許客戶端請求的最大單文件字節數 location / { proxy_pass http://localhost:8080; proxy_set_header Host $host:$server_port; } }
復雜的配置: gitlab.com.conf。
server { #偵聽的80端口 listen 80; server_name git.example.cn; location / { proxy_pass http://localhost:3000; #以下是一些反向代理的配置可刪除 proxy_redirect off; #后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP proxy_set_header Host $host; client_max_body_size 10m; #允許客戶端請求的最大單文件字節數 client_body_buffer_size 128k; #緩沖區代理緩沖用戶端請求的最大字節數 proxy_connect_timeout 300; #nginx跟后端服務器連接超時時間(代理連接超時) proxy_send_timeout 300; #后端服務器數據回傳時間(代理發送超時) proxy_read_timeout 300; #連接成功后,后端服務器響應時間(代理接收超時) proxy_buffer_size 4k; #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小 proxy_buffers 4 32k; #proxy_buffers緩沖區,網頁平均在32k以下的話,這樣設置 proxy_busy_buffers_size 64k; #高負荷下緩沖大小(proxy_buffers*2) } }
代理到上游服務器的配置中,最重要的是proxy_pass指令。以下是代理模塊中的一些常用指令:
指令 | 說明 |
---|---|
proxy_connect_timeout | Nginx從接受請求至連接到上游服務器的最長等待時間 |
proxy_send_timeout | 后端服務器數據回傳時間(代理發送超時) |
proxy_read_timeout | 連接成功后,后端服務器響應時間(代理接收超時) |
proxy_cookie_domain | 替代從上游服務器來的Set-Cookie頭的domain屬性 |
proxy_cookie_path | 替代從上游服務器來的Set-Cookie頭的path屬性 |
proxy_buffer_size | 設置代理服務器(nginx)保存用戶頭信息的緩沖區大小 |
proxy_buffers | proxy_buffers緩沖區,網頁平均在多少k以下 |
proxy_set_header | 重寫發送到上游服務器頭的內容,也可以通過將某個頭部的值設置為空字符串,而不發送某個頭部的方法實現 |
proxy_ignore_headers | 這個指令禁止處理來自代理服務器的應答。 |
proxy_intercept_errors | 使nginx阻止HTTP應答代碼為400或者更高的應答。 |
upstream指令啟用一個新的配置區段,在該區段定義一組上游服務器。這些服務器可能被設置不同的權重,也可能出于對服務器進行維護,標記為down。
upstream gitlab { ip_hash; server 192.168.122.11:8081 ; server 127.0.0.1:3000; server 127.0.0.1:3001 down; keepalive 32; } server { #偵聽的80端口 listen 80; server_name git.example.cn; location / { proxy_pass http://gitlab; #在這里設置一個代理,和upstream的名字一樣 #以下是一些反向代理的配置可刪除 proxy_redirect off; #后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; #允許客戶端請求的最大單文件字節數 client_body_buffer_size 128k; #緩沖區代理緩沖用戶端請求的最大字節數 proxy_connect_timeout 300; #nginx跟后端服務器連接超時時間(代理連接超時) proxy_send_timeout 300; #后端服務器數據回傳時間(代理發送超時) proxy_read_timeout 300; #連接成功后,后端服務器響應時間(代理接收超時) proxy_buffer_size 4k; #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小 proxy_buffers 4 32k;# 緩沖區,網頁平均在32k以下的話,這樣設置 proxy_busy_buffers_size 64k; #高負荷下緩沖大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #設定緩存文件夾大小,大于這個值,將從upstream服務器傳 } }
每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。
負載均衡:
upstream模塊能夠使用3種負載均衡算法:輪詢、IP哈希、最少連接數。
輪詢: 默認情況下使用輪詢算法,不需要配置指令來激活它,它是基于在隊列中誰是下一個的原理確保訪問均勻地分布到每個上游服務器;
IP哈希: 通過ip_hash指令來激活,Nginx通過IPv4地址的前3個字節或者整個IPv6地址作為哈希鍵來實現,同一個IP地址總是能被映射到同一個上游服務器;
最少連接數: 通過least_conn指令來激活,該算法通過選擇一個活躍數最少的上游服務器進行連接。如果上游服務器處理能力不同,可以通過給server配置weight權重來說明,該算法將考慮到不同服務器的加權最少連接數。
簡單配置 ,這里我配置了2臺服務器,當然實際上是一臺,只是端口不一樣而已,而8081的服務器是不存在的,也就是說訪問不到,但是我們訪問 http://localhost 的時候,也不會有問題,會默認跳轉到http://localhost:8080具體是因為Nginx會自動判斷服務器的狀態,如果服務器處于不能訪問(服務器掛了),就不會跳轉到這臺服務器,所以也避免了一臺服務器掛了影響使用的情況,由于Nginx默認是RR策略,所以我們不需要其他更多的設置
upstream test { server localhost:8080; server localhost:8081; } server { listen 81; server_name localhost; client_max_body_size 1024M; location / { proxy_pass http://test; proxy_set_header Host $host:$server_port; } }
負載均衡的核心代碼為
upstream test { server localhost:8080; server localhost:8081; }權重
指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況。 例如
upstream test { server localhost:8080 weight=9; server localhost:8081 weight=1; }
那么10次一般只會有1次會訪問到8081,而有9次會訪問到8080
ip_hash上面的2種方式都有一個問題,那就是下一個請求來的時候請求可能分發到另外一個服務器,當我們的程序不是無狀態的時候(采用了session保存數據),這時候就有一個很大的很問題了,比如把登錄信息保存到了session中,那么跳轉到另外一臺服務器的時候就需要重新登錄了,所以很多時候我們需要一個客戶只訪問一個服務器,那么就需要用iphash了,iphash的每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。
upstream test { ip_hash; server localhost:8080; server localhost:8081; }fair
這是個第三方模塊,按后端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream backend { fair; server localhost:8080; server localhost:8081; }url_hash
這是個第三方模塊,按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效。 在upstream中加入hash語句,server語句中不能寫入weight等其他的參數,hash_method是使用的hash算法
upstream backend { hash $request_uri; hash_method crc32; server localhost:8080; server localhost:8081; }
以上5種負載均衡各自適用不同情況下使用,所以可以根據實際情況選擇使用哪種策略模式,不過fair和url_hash需要安裝第三方模塊才能使用
server指令可選參數:
weight:設置一個服務器的訪問權重,數值越高,收到的請求也越多;
fail_timeout:在這個指定的時間內服務器必須提供響應,如果在這個時間內沒有收到響應,那么服務器將會被標記為down狀態;
max_fails:設置在fail_timeout時間之內嘗試對一個服務器連接的最大次數,如果超過這個次數,那么服務器將會被標記為down;
down:標記一個服務器不再接受任何請求;
backup:一旦其他服務器宕機,那么有該標記的機器將會接收請求。
keepalive指令:
Nginx服務器將會為每一個worker進行保持同上游服務器的連接。
第三方模塊安裝方法./configure --prefix=/你的安裝目錄 --add-module=/第三方模塊目錄常見使用場景 跨域問題
在工作中,有時候會遇到一些接口不支持跨域,這時候可以簡單的添加add_headers來支持cors跨域。配置如下:
server { listen 80; server_name api.xxx.com; add_header "Access-Control-Allow-Origin" "*"; add_header "Access-Control-Allow-Credentials" "true"; add_header "Access-Control-Allow-Methods" "GET,POST,HEAD"; location / { proxy_pass http://127.0.0.1:3000; 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; } }
上面更改頭信息,還有一種,使用 rewrite 指令重定向URI來解決跨域問題。
upstream test { server 127.0.0.1:8080; server localhost:8081; } server { listen 80; server_name api.xxx.com; location /{ root html; #去請求../html文件夾里的文件 index index.html index.htm; #首頁響應地址 } # 用于攔截請求,匹配任何以 /api/開頭的地址, # 匹配符合以后,停止往下搜索正則。 location ^~/api/{ # 代表重寫攔截進來的請求,并且只能對域名后邊的除去傳遞的參數外的字符串起作用, # 例如www.a.com/proxy/api/msg?meth=1&par=2重寫,只對/proxy/api/msg重寫。 # rewrite后面的參數是一個簡單的正則 ^/api/(.*)$, # $1代表正則中的第一個(),$2代表第二個()的值,以此類推。 rewrite ^/api/(.*)$ /$1 break; # 把請求代理到其他主機 # 其中 http://www.b.com/ 寫法和 http://www.b.com寫法的區別如下 # 如果你的請求地址是他 http://server/html/test.jsp # 配置一: http://www.b.com/ 后面有“/” # 將反向代理成 http://www.b.com/html/test.jsp 訪問 # 配置一: http://www.b.com 后面沒有有“/” # 將反向代理成 http://www.b.com/test.jsp 訪問 proxy_pass http://test; } }ssl配置
超文本傳輸安全協議(縮寫:HTTPS,英語:Hypertext Transfer Protocol Secure)是超文本傳輸協議和SSL/TLS的組合,用以提供加密通訊及對網絡服務器身份的鑒定。HTTPS連接經常被用于萬維網上的交易支付和企業信息系統中敏感信息的傳輸。HTTPS不應與在RFC 2660中定義的安全超文本傳輸協議(S-HTTP)相混。
HTTPS 目前已經是所有注重隱私和安全的網站的首選,隨著技術的不斷發展,HTTPS 網站已不再是大型網站的專利,所有普通的個人站長和博客均可以自己動手搭建一個安全的加密的網站。
查看目前nginx編譯選項
sbin/nginx -V
輸出下面內容
nginx version: nginx/1.7.8 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx-1.5.1 --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre
如果依賴的模塊不存在,可以輸入下面命令重新編譯安裝。
./configure --user=www --group=www --prefix=/mt/server/nginx --with-http_stub_status_module --with-openssl=/home/nginx-1.8.0/openssl-1.0.0d --without-http-cache --with-http_ssl_module --with-http_gzip_static_module --with-...
HTTPS server
server { listen 443 ssl; server_name localhost; ssl_certificate /usr/local/nginx/conf/vjjhd.crt; ssl_certificate_key /usr/local/nginx/conf/vjjhd.key; # 設置ssl/tls會話緩存的類型和大小。如果設置了這個參數一般是shared,buildin可能會參數內存碎片,默認是none,和off差不多,停用緩存。如shared:SSL:10m表示我所有的nginx工作進程共享ssl會話緩存,官網介紹說1M可以存放約4000個sessions。 ssl_session_cache shared:SSL:1m; # 客戶端可以重用會話緩存中ssl參數的過期時間,內網系統默認5分鐘太短了,可以設成30m即30分鐘甚至4h。 ssl_session_timeout 5m; # 選擇加密套件,不同的瀏覽器所支持的套件(和順序)可能會不同。 # 這里指定的是OpenSSL庫能夠識別的寫法,你可以通過 openssl -v cipher "RC4:HIGH:!aNULL:!MD5"(后面是你所指定的套件加密算法) 來看所支持算法。 ssl_ciphers HIGH:!aNULL:!MD5; # 設置協商加密算法時,優先使用我們服務端的加密套件,而不是客戶端瀏覽器的加密套件。 ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/39506.html
摘要:是什么是一款輕量級服務器也是一款反向代理服務器能干什么可直接支持和的程序可作為反向代理服務器作為負載均衡服務器作為郵件代理服務器幫助實現前端動靜分離特點高穩定高性能資源占用少功能豐富模塊化結構支持熱部署的安裝安裝輸入查詢版本信息看系統是否 Nginx是什么? Nginx是一款輕量級Web服務器,也是一款反向代理服務器 Nginx能干什么? 可直接支持Rails和PHP的程序 可作為H...
摘要:開發這個分支的原因之一是甲骨文公司收購了后,有將閉源的潛在風險。可以完全兼容,可以成為的替代品。提供了更好的進程管理方式,可以有效控制內存和進程可以平滑重載配置。新版已經集成了,可以直接使用。 編譯安裝LNMP 準備工作 安裝gcc yum -y install gcc-c++ 1、安裝nginx 安裝pcre-devel yum -y install pcre-devel 安裝gzi...
摘要:開發這個分支的原因之一是甲骨文公司收購了后,有將閉源的潛在風險。可以完全兼容,可以成為的替代品。提供了更好的進程管理方式,可以有效控制內存和進程可以平滑重載配置。新版已經集成了,可以直接使用。 編譯安裝LNMP 準備工作 安裝gcc yum -y install gcc-c++ 1、安裝nginx 安裝pcre-devel yum -y install pcre-devel 安裝gzi...
閱讀 1678·2019-08-30 12:51
閱讀 664·2019-08-29 17:30
閱讀 3703·2019-08-29 15:17
閱讀 860·2019-08-28 18:10
閱讀 1368·2019-08-26 17:08
閱讀 2178·2019-08-26 12:16
閱讀 3442·2019-08-26 11:47
閱讀 3507·2019-08-23 16:18