博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
十二周二次课
阅读量:6801 次
发布时间:2019-06-26

本文共 19254 字,大约阅读时间需要 64 分钟。

hot3.png

1、 Nginx安装

• cd /usr/local/src

• wget http://nginx.org/download/nginx-1.12.1.tar.gz

• tar zxvf nginx-1.12.1.tar.gz

• ./configure --prefix=/usr/local/nginx

• make &&  make install

• vim /etc/init.d/nginx //复制如下内容(参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx )

 

• chmod 755 /etc/init.d/nginx

• chkconfig --add nginx

• chkconfig nginx on

• cd /usr/local/nginx/conf/; mv nginx.conf nginx.conf.bak

• vim nginx.conf //写入如下内容(参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf)

• /usr/local/nginx/sbin/nginx -t

• /etc/init.d/nginx  start                         #启动nginx 

• netstat -lntp |grep 80

准备工作

安装包

[root@localhsot ~]# cd /usr/local/src/下载安装包:[root@localhsot  src]# wget http://nginx.org/download/nginx-1.12.1.tar.gz解压:[root@localhsot  src]# tar zxvf nginx-1.12.1.tar.gz

安装

环境配置

[root@localhsot  src]# cd nginx-1.12.1/[root@localhsot  nginx-1.12.1]# ./configure --prefix=/usr/local/nginx#如果需要支持某模块,可以在此添加,如HTTPS、SSL等

编译&安装

[root@localhsot  nginx-1.12.1]# make && make install[root@localhsot  nginx-1.12.1]# echo $?0[root@localhsot  nginx-1.12.1]# cd /usr/local/nginx/[root@localhsot  nginx]# lsconf  html  logs  sbin

153527_nLTg_3803405.png

174911_BcU5_3803405.png

 

配置

添加&启动脚本服务

创建启动脚本:[root@localhsot  nginx]# vim /etc/init.d/nginx#!/bin/bash# chkconfig: - 30 21# description: http service.# Source Function Library. /etc/init.d/functions# Nginx SettingsNGINX_SBIN="/usr/local/nginx/sbin/nginx"NGINX_CONF="/usr/local/nginx/conf/nginx.conf"NGINX_PID="/usr/local/nginx/logs/nginx.pid"RETVAL=0prog="Nginx"start() {    echo -n $"Starting $prog: "    mkdir -p /dev/shm/nginx_temp    daemon $NGINX_SBIN -c $NGINX_CONF    RETVAL=$?    echo    return $RETVAL}stop() {    echo -n $"Stopping $prog: "    killproc -p $NGINX_PID $NGINX_SBIN -TERM    rm -rf /dev/shm/nginx_temp    RETVAL=$?    echo    return $RETVAL}reload(){    echo -n $"Reloading $prog: "    killproc -p $NGINX_PID $NGINX_SBIN -HUP    RETVAL=$?    echo    return $RETVAL}restart(){    stop    start}configtest(){    $NGINX_SBIN -c $NGINX_CONF -t    return 0}case "$1" in  start)        start        ;;  stop)        stop        ;;  reload)        reload        ;;  restart)        restart        ;;  configtest)        configtest        ;;  *)        echo $"Usage: $0 {start|stop|reload|restart|configtest}"        RETVAL=1esacexit $RETVAL检查脚本语法:[root@localhsot nginx]# /usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful更改权限:[root@localhsot  nginx]# chmod 755 /etc/init.d/nginx添加到系统服务:[root@localhsot  nginx]# chkconfig --add nginx[root@localhsot  nginx]# chkconfig nginx on

更改配置文件

182104_toGc_3803405.png

[root@localhsot  nginx]# cd /usr/local/nginx/conf/注释掉Nginx自带脚本,创建自己的脚本:[root@localhsot  conf]# mv nginx.conf nginx.conf.bak[root@localhsot conf]# vim nginx.confuser nobody nobody;#定义启动Nginx的用户worker_processes 2;#定义子进程数目error_log /usr/local/nginx/logs/nginx_error.log crit;pid /usr/local/nginx/logs/nginx.pid;worker_rlimit_nofile 51200;#指定Nginx最多可打开的文件数目events{    use epoll;    worker_connections 6000;    #进程最大连接数}http{    include mime.types;    default_type application/octet-stream;    server_names_hash_bucket_size 3526;    server_names_hash_max_size 4096;    log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'    ' $host "$request_uri" $status'    ' "$http_referer" "$http_user_agent"';    sendfile on;    tcp_nopush on;    keepalive_timeout 30;    client_header_timeout 3m;    client_body_timeout 3m;    send_timeout 3m;    connection_pool_size 256;    client_header_buffer_size 1k;    large_client_header_buffers 8 4k;    request_pool_size 4k;    output_buffers 4 32k;    postpone_output 1460;    client_max_body_size 10m;    client_body_buffer_size 256k;    client_body_temp_path /usr/local/nginx/client_body_temp;    proxy_temp_path /usr/local/nginx/proxy_temp;    fastcgi_temp_path /usr/local/nginx/fastcgi_temp;    fastcgi_intercept_errors on;    tcp_nodelay on;    gzip on;    gzip_min_length 1k;    gzip_buffers 4 8k;    gzip_comp_level 5;    gzip_http_version 1.1;    gzip_types text/plain application/x-javascript text/css text/htm     application/xml;    server    #虚拟主机,设置80端口,没有80端口说明,service没有检测到    {        listen 80;        server_name localhost;        index index.html index.htm index.php;        root /usr/local/nginx/html;               #网站的根目录        location ~ \.php$        #配置PHP解析        {            include fastcgi_params;            fastcgi_pass unix:/tmp/php-fcgi.sock;           #fastcgi_pass 127.0.0.1:9000;      #指定监听的端口            fastcgi_index index.php;            fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;        }        }}检测语法:[root@localhsot  conf]# /usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful启动Nginx服务:[root@localhsot conf]# /etc/init.d/nginx startStarting nginx (via systemctl):                            [  确定  ]

-t :查看配置文件是否编译成功 。/usr/local/nginx/sbin/nginx -t

f7d07654d02fd58848e43fb498caf7e912f.jpg

 

182640_zcIn_3803405.png

182901_5ZgD_3803405.png

使用ps aux |grep nginx查看进程数量,副进程一般是root。主进是nobody.Ss:表示是一个父进程。S:是子进程。

d37666f74ba659f537fbf91a2fd9011121e.jpg

15e61de29aa2b5cfdad46ea088238d6214d.jpg

测试主机联通性。curl 127.0.0.1也可以联通。且显示的内容一样

7c62b862876758cc1fb5d9ce3b71502b7c5.jpg

 

查看访问的脚本

183422_IuVl_3803405.png

cat nginx.conf

183453_4rwn_3803405.png

为什么能访问,是因为之前定义了:root /usr/local/nginx/html

183604_JrW6_3803405.png

至此,Nginx基础配置完成!

检测

[root@localhsot  conf]# curl localhostWelcome to nginx!

Welcome to nginx!

If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.

For online documentation and support please refer tonginx.org.

Commercial support is available atnginx.com.

Thank you for using nginx.

使用浏览器检测:

先将虚拟主机IP添加到本地hosts,然后访问:

检测PHP解析

[root@localhsot  conf]# vim /usr/local/nginx/html/1.php
[root@localhsot conf]# curl localhost/1.phpwelcom to-nginx text.

 

浏览器检测:

 

常见的502问题解决

https://www.linuxidc.com/Linux/2015-11/125068.htm

对于LNMP来说,最常见的就是502问题,LNMP环境搭建完成后,一访问网站直接提示“502 Bad Gateway”。主要原因大致分为两种:

(1)配置错误

在Nginx配置中有这么一段:

location ~ \.php$        #配置PHP解析        {            include fastcgi_params;            fastcgi_pass unix:/tmp/php-fcgi.sock;            fastcgi_index index.php;            fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;        }

如果把fastcgi_pass(这是用来通信的)后面指定的路径配置错了,那么就会出现502错误,因为Nginx找不到php-fpm了,fastcgi _pass后面可以跟socket也可以跟IP:port,默认监听地址为:127.0.0.1:9000。

注意: 这里用两种形式都可以,但是两个配置文件(Nginx和php-fpm)中的形式一定要统一,不然绝对502;如果用套接字形式的话,socket文件的路径一定要对,不然也还是502。

(2)资源耗尽

LNMP架构处理PHP时,是Nginx直接调取后端的php-fpm服务,如果Nginx的请求量偏高,而我们又没给php-fpm配置足够的子进程数,那么总有php-fpm资源耗尽的时候,一旦耗尽Nginx找不到php-fpm,此时也会导致502错误出现。解决办法就是调整php-fpm.conf中的pm.max_children数值,使其增加。但也不能无限制增加,因为服务器的资源有限。4G内存机器如果只跑php-fpm和Nginx,不跑MySQL服务,pm.max _children可以设置为150,尽量不要超过该数值,8G内存设置为300,以此类推。

(3)listen.mode

在php-fpm配置文件中有参数listen.mode,该参数时指定php-fpm所监听的socket文件listen = /tmp/php-fcgi.sock的权限,如果在此不指定权限,默认权限为440(只允许root用户及root组读取),之后在Nginx中监听该文件时就会提示502错误,解决办法就是给予socket文件读写权限666。

如果遇到其它的较为少见的错误,我们可以修改nginx的错误日志(/usr/local/nginx/logs/nginx_error.log)的级别,在配置文件/usr/local/nginx/conf/nginx.conf中将crit改为debug,使其记录最多的日志内容,这样方便我们排查错误,但是配置更改完成后要记得将级别改回crit,避免日志文件占用太多磁盘空间。

 

2、 Nginx默认虚拟主机

编辑Nginx配置文件,删除原有server内容,添加如下内容:

创建虚拟主机

添加虚拟主机目录

[root@localhsot  ~]# cd /usr/local/nginx/conf[root@localhsot  conf]# vim /usr/local/nginx/conf/nginx.conf……include vhost/*.conf; #创建一个虚拟主机配置文件子目录(相当于增加子虚拟主机) 创建配置文件中的目录文件:[root@localhsot  conf]# mkdir vhost

a003b525f78b725f09c67b19fc5c1b18c41.jpg

最后面只有一个括号

注: “nginx.conf”文件中支持“include”语法。

增加一台虚拟主机:

[root@localhsot  conf]# cd vhost/[root@localhsot  vhost]# vim aaa.com.confserver{    listen 80 default_server;     #有'default_server'标记的就是默认虚拟主机    server_name aaa.com;    index index.html index.htm index.php;    root /data/wwwroot/default;}创建配置文件中指定的root目录:[root@localhsot  vhost]# mkdir -p /data/wwwroot/default

为虚拟主机添加内容

进入目录,添加索引页:[root@localhsot  vhost]# cd /data/wwwroot/default[root@localhsot  default]# vim index.htmlThis is the default directory.[root@localhsot  default]# /usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful  重启或重新加载(二选一):[root@localhsot  default]# /usr/local/nginx/sbin/nginx -s reload[root@localhsot  default]# /usr/local/nginx/sbin/nginx restart

50808a623b2d060d3246b0c2f784393cc56.jpg

950e188e66e9a7df328ced57a8b0abb1dfb.jpg

检测

[root@localhost default]# curl localhostThis is the default directory.[root@localhost default]# curl -x 127.0.0.1:80 aaa.comThis is the default directory.[root@localhost default]# curl -x 127.0.0.1:80 bbb.com    #因为访问的是虚拟主机,所以结果都一样This is the default directory.[root@localhost default]# cd /usr/local/nginx/conf/[root@localhost conf]# ls vhost/aaa.com.conf[root@localhost conf]# tail nginx.conf    tcp_nodelay on;    gzip on;    gzip_min_length 1k;    gzip_buffers 4 8k;    gzip_comp_level 5;    gzip_http_version 1.1;    gzip_type test/plain application/x-javascript test/css text/htm    application/xml;    include vhost/*.conf;}

 

即:添加一台虚拟主机,所谓默认虚拟主机就是/usr/local/nginx/conf/vhost目录下虚拟主机配置文件中有“default_server”标记的虚拟主机。

 

3、 Nginx用户认证

创建一台虚拟主机:

在vhost目录下操作:[root@localhsot  vhost]# vim test.com.confserver{    listen 80;    server_name test.com;    index index.html index.htm index.php;    root /data/wwwroot/test.com;    location  /#指定设置用户认证的目录    {        auth_basic              "Auth";        #指定用户名        auth_basic_user_file   /usr/local/nginx/conf/htpasswd;        #指定用户的密码文件}}

说明: 上述“location”中的内容即为设定用户认证。在此是为整个站点设定的用户认证,如果只是为某个目录设置用户认证,在location所在行进行编辑就好,如:location /admin 目录。也可以对某种请求(即对一个普通文件)设定用户认证,如location ~ admin.php()使用 ~ 进行匹配)。

创建密码文件

在此需要使用Apache的/usr/local/apache2.4/bin/htpasswd命令,如果机器中已经有Apache,可以直接使用,如果没有,需要使用yum安装httpd命令:

[root@localhsot  vhost]# yum install -y httpd

-c:创建密码文件:

[root@localhsot  vhost]# htpasswd -c /usr/local/nginx/conf/htpasswd wzqNew password: Re-type new password: Adding password for user wzq[root@localhsot  vhost]#/usr/local/apache2.4/bin/htpasswd -c /usr/local/nginx/conf/htpasswd wzq         #创建的用户放在/usr/local/nginx/conf/htpasswd 目录中 New password: Re-type new password: Adding password for user wzq[root@localhsot  vhost]# htpasswd  /usr/local/nginx/conf/htpasswd user1  #第二次创建用户密码时,不能使用-C,使用-C会重置密码,覆盖原来的文件

使用cat命令查看生产的密码。

182102_Idb9_3803405.png

11b161c50cb5ad19c78ea392a74d027cd93.jpg

734c91d05e0e4816a0fa975817b581e8e27.jpg

即,创建密码文件htpasswd,指定用户为wzq。‘-c’=create,创建该密码文件,如果是第二次添加用户,不用加该选项,所添加的用户名和密码会保存到该文件下。

重载:

[root@localhsot  vhost]# /usr/local/nginx/sbin/nginx -t           #检测nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful[root@localhsot  vhost]# /usr/local/nginx/sbin/nginx -s reload    #重新加载

a338dcb03bbf37bfc1c14c208c49ba962dd.jpg

说明: 使用reload而不使用restart的好处是能避免因配置文件中存在错误而无法正常启动!reload不会破坏原有运行环境。

 

测试

[root@localhsot  vhost]# curl -x 127.0.0.1:80 test.com        ............401....             #需要指定用户.....[root@localhsot  vhost]# curl -uwzq:123456 -x127.0.0.1:80 test.com................404.........................[root@localhsot  vhost]# ls /data/wwwroot/test.comls:.........:没有那个文件或目录[root@localhsot  vhost]# mkdir /data/wwwroot/test.com添加索引页:[root@localhsot  vhost]# echo "test.com" > /data/wwwroot/test.com/index.html再一次访问[root@localhsot  vhost]# curl -uwzq:123456 -x127.0.0.1:80 test.comtest.com

在test.com.conf中添加/admin/,就不用指定用户和密码了

在vhost目录下操作:[root@localhsot  vhost]# vim test.com.confserver{    listen 80;    server_name test.com;    index index.html index.htm index.php;    root /data/wwwroot/test.com;    location  /admin/           #指定设置用户认证的目录    {        auth_basic              "Auth";        #指定用户名        auth_basic_user_file   /usr/local/nginx/conf/htpasswd;        #指定用户的密码文件}}

重载:

[root@localhsot  vhost]# /usr/local/nginx/sbin/nginx -t           #检测nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful[root@localhsot  vhost]# /usr/local/nginx/sbin/nginx -s reload    #重新加载[root@localhsot  vhost]# curl -x 127.0.0.1:80 test.comtest.com[root@localhsot  vhost]# curl -x 127.0.0.1:80 test.com/admin/

f122612b408b230a0ea4523a3ae6bac8576.jpg 

针对指定目录做测试。

添加虚拟主机配置文件指定的根目录:[root@localhsot  vhost]# mkdir /data/wwwroot/test.com[root@localhsot  vhost]# curl -x127.0.0.1:80 test.com/admin/......401............[root@localhsot  vhost]# curl -uwz:123456 -x127.0.0.1:80 test.com/admin/test.com admin dir

针对admin做测试。

[root@localhsot  vhost]# vi test.com.confserver{   listen80;   server_name test.com;   index index.html index.htm index.php   root /data/wwwroot/test.com;   location ~admin/   {       auth_basic                 "Auth";       auth_basic_user_file       /usr/local/nginx/htpasswd;   }}[root@localhsot  vhost]# /usr/local/nginx/sbin/nginx -t           #检测nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful[root@localhsot  vhost]# /usr/local/nginx/sbin/nginx -s reload    #重新加载[root@localhsot  vhost]# curl -uwzq:123456 -x127.0.0.1:80 test.com/admin/test.com admin  dir

检测

[root@localhsot  vhost]# curl -x127.0.0.1:80 test.com/admin/......401............[root@localhsot  vhost]# curl -uwz:123456 -x127.0.0.1:80 test.com/admin/test.com admin dir

注: 如果不指定用户名和密码,会报错401(需要用户认证);如果为创建虚拟主机根目录会报错404(找不到指定目录);如果指定目录中没有添加索引页(.html或.php文件)会报错404(文件存在错误)。

 

配置虚拟主机PHP解析:

编辑配置文件,添加如下location内容:

[root@localhsot  vhost]# vim /usr/local/nginx/conf/vhost/test.com.conf    location ~ \.php$        #配置PHP解析        {            include fastcgi_params;            fastcgi_pass unix:/tmp/php-fcgi.sock;            fastcgi_index index.php;            fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;        }}

注意: “fastcgi_param SCRIPT_FILENAME”该行路径要和站点根目录路径一致,如图:

 

检测:

[root@localhsot  vhost]# curl -x127.0.0.1:80 test.com/index.phpThis is a test of .php

注: 此处为了方便检测,已将用户认证关闭。

 

4、 Nginx域名重定向

编辑虚拟主机配置文件:

[root@localhsot  vhost]# vim test.com.confserver{    listen 80;    server_name test.com test2.com test3.com;    #为一个IP配置多个域名,此时权重会改变,所以需要使用户访问其他域名时全部跳转到第一个域名    index index.html index.htm index.php;    root /data/wwwroot/test.com;    if ($host != 'test.com' ) {        rewrite  ^/(.*)$  http://test.com/$1  permanent;    }    #使用rewrite模块}[root@localhsot  vhost]# /usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful[root@localhsot  vhost]# /usr/local/nginx/sbin/nginx -s reload

说明: 使用rewrite模块进行域名重定向实现域名跳转功能。

检测

[root@localhsot  vhost]# curl -x127.0.0.1:80 test2.com -IHTTP/1.1 301 Moved PermanentlyServer: nginx/1.12.1Date: Thu, 10 Aug 2017 10:41:30 GMTContent-Type: text/htmlContent-Length: 185Connection: keep-aliveLocation: http://test.com/               #重定向的位置

a7749dd2a58981a3bcaabbc58c6a6267a43.jpg

即,301:永久域名跳转,跳转后的地址为:Location: 

403    :拒绝访问

查看默认虚拟主机的方法:

一、使用命令ls vhost/,查看默认主机,排在第一个就是默认的主机。

161611_R7Q7_3803405.png

二、使用cat命令查看。

161904_DkDK_3803405.png

扩展:Nginx配置文件详解

#定义Nginx运行的用户和用户组user www www;#nginx进程数,建议设置为等于CPU总核心数。worker_processes 8;#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]error_log /var/log/nginx/error.log info;#进程文件pid /var/run/nginx.pid;#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。worker_rlimit_nofile 65535;#工作模式与连接数上限events{#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。use epoll;#单个进程最大连接数(最大连接数=连接数*进程数)worker_connections 65535;}#设定http服务器http{include mime.types; #文件扩展名与文件类型映射表default_type application/octet-stream; #默认文件类型#charset utf-8; #默认编码server_names_hash_bucket_size 128; #服务器名字的hash表大小client_header_buffer_size 32k; #上传文件大小限制large_client_header_buffers 4 64k; #设定请求缓client_max_body_size 8m; #设定请求缓sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。tcp_nopush on; #防止网络阻塞tcp_nodelay on; #防止网络阻塞keepalive_timeout 120; #长连接超时时间,单位是秒#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;#gzip模块设置gzip on; #开启gzip压缩输出gzip_min_length 1k; #最小压缩文件大小gzip_buffers 4 16k; #压缩缓冲区gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)gzip_comp_level 2; #压缩等级gzip_types text/plain application/x-javascript text/css application/xml;#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。gzip_vary on;#limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用upstream blog.ha97.com {#upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。server 192.168.80.121:80 weight=3;server 192.168.80.122:80 weight=2;server 192.168.80.123:80 weight=3;}#虚拟主机的配置server{#监听端口listen 80;#域名可以有多个,用空格隔开server_name www.ha97.com ha97.com;index index.html index.htm index.php;root /data/www/ha97;location ~ .*\.(php|php5)?${fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi.conf;}#图片缓存时间设置location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 10d;}#JS和CSS缓存时间设置location ~ .*\.(js|css)?${expires 1h;}#日志格式设定log_format access '$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/ha97access.log access;#对 "/" 启用反向代理location / {proxy_pass http://127.0.0.1:88;proxy_redirect off;proxy_set_header X-Real-IP $remote_addr;#后端的Web服务器可以通过X-Forwarded-For获取用户真实IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#以下是一些反向代理的配置,可选。proxy_set_header Host $host;client_max_body_size 10m; #允许客户端请求的最大单文件字节数client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)proxy_temp_file_write_size 64k;#设定缓存文件夹大小,大于这个值,将从upstream服务器传}#设定查看Nginx状态的地址location /NginxStatus {stub_status on;access_log on;auth_basic "NginxStatus";auth_basic_user_file conf/htpasswd;#htpasswd文件的内容可以用apache提供的htpasswd工具来产生。}#本地动静分离反向代理配置#所有jsp的页面均交由tomcat或resin处理location ~ .(jsp|jspx|do)?$ {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_pass http://127.0.0.1:8080;}#所有静态文件由nginx直接读取不经过tomcat或resinlocation ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)${ expires 15d; }location ~ .*.(js|css)?${ expires 1h; }}}

 

常见问题:

1、blob.png

答:没写全。 

  

2.连接不上?端口没开

184648_7gYm_3803405.png

 

3、

[root vhost]# 

[root vhost]# curl -x127.0.0.1:80 test.com 
<html>
<head><title>401 Authorization Required</title></head>
<body bgcolor="white">
<center><h1>401 Authorization Required</h1></center>
<hr><center>nginx/1.12.2</center>
</body>
</html>
[root vhost]# curl  -ujiejie:qazwsx -x127.0.0.1:80 test.com 
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.12.2</center>
</body>
</html>
[root vhost]#

怎么会报403呢

 

答:网站根目录下面写个index.html 

 

注意:~(.*)admin.php$

这样可以匹配的更全面。

htpasswd -cm 

-m 以md5格式加密,加上安全点

 

4、

 

 

 

本节来自:

详参:

扩展

nginx.conf 配置详解  http://www.ha97.com/5194.html    http://my.oschina.net/duxuefeng/blog/34880
nginx rewrite四种flag  http://www.netingcn.com/nginx-rewrite-flag.html  http://unixman.blog.51cto.com/10163040/1711943

转载于:https://my.oschina.net/u/3803405/blog/1809764

你可能感兴趣的文章
Vue插件从封装到发布
查看>>
扒一扒我们生活中常见的品牌小程序
查看>>
使用注解干掉大量if else和switch
查看>>
【本人秃顶程序员】实战并发-使用分布式缓存和有限状态机
查看>>
[MySQL光速入门]019 分别使用loop, while, repeat 来计算 从0加到100 答案
查看>>
浅析libuv源码-node事件轮询解析(2)
查看>>
SpringBoot使用Nacos配置中心
查看>>
CentOS6.x下自动安装本地和网络YUM源
查看>>
mysql基础知识之增删查改使用介绍
查看>>
C++11 提升Vector效能的技巧
查看>>
Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.
查看>>
docker使用指南
查看>>
如何让对方发给你需要的文件格式?
查看>>
php学习笔记--运算符号
查看>>
IPv6已分配地址中国仅占0.29%
查看>>
解决Lync2010和Lync2013转接电话断开的问题
查看>>
find grep wc awk sed sort uniq split指令详解
查看>>
高并发中的卡死状态 -HashMap
查看>>
http上传文件深度解析-高性能http传输
查看>>
Linux下配置Java环境变量
查看>>