1. 首页
  2. IT资讯

nginx

nginx 查看配置文件
首先执行命令找到nginx路径
ps aux | grep nginx
如nginx路径为
/usr/local/nginx/sbin/nginx

nginx -t #可以查到配置文件的信息
———————————————————————————
nginx 安装

wget http://mirrors.sohu.com/php/php-5.6.2.tar.gz yum -y install gcc gcc-c++ libxml2 libxml2-devel tar -xf php-5.6.2.tar.gz cd php-5.6.2 find / -name mysql /var/lib/mysql ll /var/lib/mysql ./configure -enable-fpm -enable-mbstring -with-mysql=/usr/bin/mysql find / -name mysql.h yum list mysql-devel ./configure -enable-fpm -enable-mbstring -with-mysql=/usr;
#这个配置比较全
#./configure --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir=/usr/local/freetype --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --disable-fileinfo --enable-opcache --enable-intl --with-xsl

make;
#make ZEND_EXTRA_LIBS='-liconv' #collect2: error: ld returned 1 exit status
make install
php
-v
cp php.ini-production /usr/local/lib/php.ini
cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod a+x /etc/init.d/php-fpm
/etc/init.d/php-fpm start

yum -y install pcre* yum -y install openssl* wget mirrors.sohu.com/nginx/nginx-1.9.0.tar.gz tar -zxvf nginx-1.9.0.tar.gz cd nginx-1.9.0 ./configure --prefix=/usr/local/nginx --with-http_ssl_module make make install find / -name nginx; #/usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx; #启动 nginx 进程 find / -name nginx.conf; vi /usr/local/nginx/conf/nginx.conf; #进行配置 killall nginx; #杀掉进程 /usr/local/nginx/sbin/nginx -s start; #启动
/usr/local/nginx/sbin/nginx -s reload; #平滑启动配置
vi /etc/rc.local; #配置开机启动

———————————————————————————
nginx 简单操作
killall nginx – 直接关闭进程
/usr/local/nginx/sbin/nginx – 这样开启进程
/usr/local/nginx/sbin/nginx -s reload – 重新加载配置
/usr/local/nginx/sbin/nginx -s stop – 停止
———————————————————————————
nginx 开机启动
在 /etc/rc.local 文件,增加一行 /usr/local/nginx/sbin/nginx
———————————————————————————
首次配置文

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;      include /usr/local/nginx/host/*.conf; #可以把配置文件分成多个,不必全部网站的配置都写在一起。      # another virtual host using mix of IP-, name-, and port-based configuration     #

server {         listen      80;         charset     GBK;         server_name localhost 192.168.2.31;         root        /var/www/html/localhost;         access_log  logs/$fastcgi_script_name.log;         #location    / { index index.php;}         location    ~ .*.(php|PHP)?$ {                 fastcgi_pass   127.0.0.1:9000;                 fastcgi_index  index.php;                 fastcgi_param  SCRIPT_FILENAME /var/www/html/localhost$fastcgi_script_name; #我擅作主张把$fastcgi_script_name,导致提示access denied错误                 include        fastcgi_params;                 fastcgi_intercept_errors on;         } }

****************************************** 2016-07-26 ******************************************
2016/07/26 11:30:07 [crit] 16632#0: *1070 open() “/usr/local/nginx/logs//****/makehtml_archives_action.php.log” failed (2: No such file or directory) while logging request, client: 19.155.66.50, server: localhost, request: “GET /****/makehtml_archives_action.php?endid=0&startid=0&typeid=0&totalnum=3077&startdd=2640&pagesize=20&seltime=0&sstime=1469503757&stime=&etime=&uptype=mkall&mkvalue=0&isremote=0&serviterm= HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “**********”, referrer: “http://*********/***********/makehtml_archives_action.php?endid=0&startid=0&typeid=0&totalnum=3077&startdd=2620&pagesize=20&seltime=0&sstime=1469503757&stime=&etime=&uptype=mkall&mkvalue=0&isremote=0&serviterm=”

nginx 的 error_log 日志经常提示这个。应该是配置文件的 access.log 没配置好。配置文件中的 $fastcgi_script_name 应该指的是运行文件的名称。修改为:

server {         listen      6080;         charset     UTF8;         server_name localhost;         root        /var/www/html/mmgsj;         access_log  logs/access.log-mmgjs;         #location    / { index index.php;}         location    ~ .*.(php|PHP)?$ {                 fastcgi_pass   127.0.0.1:9000;                 fastcgi_index  index.php;                 fastcgi_param  SCRIPT_FILENAME /var/www/html/mmgsj$fastcgi_script_name;                 include        fastcgi_params;                 fastcgi_intercept_errors on;         } }

 

rewrite 例子
rewrite ^(.*)-htm-(.*)$ $1.php?$2 last; rewrite ^(.*)/simple/([a-z0-9_]+.html)$ $1/simple/index.php?$2 last; rewrite ^(.*)/data/(.*).(htm|php)$ 404.html last; rewrite ^(.*)/attachment/(.*).(htm|php)$ 404.html last; rewrite ^(.*)/html/(.*).(htm|php)$ 404.html last;

 ThinkPHP 配置的例子

server {         listen      80;         charset     UTF8;         server_name test.com;         root        /var/www/html/test;          access_log  logs/access.log-test;          #location ~ .*.(php|PHP)?$ {         #        fastcgi_pass   127.0.0.1:9000;         #        fastcgi_index  index.php;         #        fastcgi_param  SCRIPT_FILENAME /var/www/html/test_soso$fastcgi_script_name;         #        include        fastcgi_params;         #        fastcgi_intercept_errors on;         #}          #去掉$是为了不匹配行末,即可以匹配.php/,以实现pathinfo         #如果你不需要用到php5后缀,也可以将其去掉         location ~ .php         {                 fastcgi_pass   127.0.0.1:9000;                 fastcgi_index  index.php;                 fastcgi_param  SCRIPT_FILENAME /var/www/html/test_soso$fastcgi_script_name;                 include        fastcgi_params;                 fastcgi_intercept_errors on;                  #定义变量 $path_info ,用于存放pathinfo信息                 set $path_info "";                 #定义变量 $real_script_name,用于存放真实地址                 set $real_script_name $fastcgi_script_name;

                #如果地址与引号内的正则表达式匹配
                if ($fastcgi_script_name ~ “^(.+?.php)(/.+)$”) {
                        #将文件地址赋值给变量 $real_script_name
                        set $real_script_name $1;
                        #将文件地址后的参数赋值给变量 $path_info
                        set $path_info $2;
                }
                #配置fastcgi的一些参数
                fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
                fastcgi_param SCRIPT_NAME $real_script_name;
                fastcgi_param PATH_INFO $path_info;
        }

}

  配置 Laravel 的例子 

server {         listen      80;         charset     UTF8;         server_name www.mylaravel.com;         set $root_path '/var/www/html/laravel';         root        $root_path;         access_log  logs/access.laravel.log;         error_log   logs/error.laravel.log;          location / {                 rewrite ^(.*)$ /public/index.php last;         }          location ~ .*.(js|css|svg|jpg|ttf|woff2|woff|png)$ {                 root $root_path/public/;         }          location ~ .*.(php|PHP)?$ {                 fastcgi_pass   127.0.0.1:9000;                 fastcgi_index  index.php;                 fastcgi_param  SCRIPT_FILENAME $root_path$fastcgi_script_name;                 include        fastcgi_params;                 fastcgi_intercept_errors on;         } }

 

location /qyapi/ {        rewrite ^(.*)$ /qyapi/public/index.php last; }  location ~ /qyapi/.*.(html|htm)$ {        root $root_path/; }  location ~ /qyapi/.*.(js|css|svg|jpg|ttf|woff2|woff|png)$ {        root $root_path/; }

 

下面是php 5.3以上版本将TCP改成socket方式的配置方法:  修改php-fpm.conf(/usr/local/php/etc/php-fpm.conf)  ;listen = 127.0.0.1:9000 listen = /dev/shm/php-cgi.sock  修改nginx配置文件server段的配置,将http的方式改为socket方式  location ~ .*.(php|php5)?$  {                 #fastcgi_pass  127.0.0.1:9000;                 fastcgi_pass   unix:/dev/shm/php-cgi.sock;                 fastcgi_index index.php;                 include fastcgi.conf;         }  重启php-fpm与nginx  service nginx restart service php-fpm restart ls -al /dev/shm  可以看到php-cgi.sock文件unix套接字类型  理论上,unix socket 不走网络,效率高一些,但稳定性不是很理想,看这个测试:

 

alias location /abc/ {     alias /home/html/abc/; } #在这段配置下,http://test/abc/a.html就指定的是 /home/html/abc/a.html。这段配置亦可改成  root location /abc/ {     root /home/html/;} #可以看到,使用root设置目录的绝对路径时,少了/abc,也就是说,使用root来设置前端非根目录时,nginx会组合root和location的路径。 #另外,使用alias时目录名后面一定要加“/”

 

问题与解决

1. php-fpm.log日志文件,提示错误
server reached pm.max_children setting (5), consider raising it
把  pm.max_children 设置为 500
后来又提示
you may need to increase pm.start_servers, or pm.min/max_spare_servers

location 的配置

location 优先级官方文档      Directives with the = prefix that match the query exactly. If found, searching stops.     All remaining directives with conventional strings, longest match first. If this match used the ^~ prefix, searching stops.     Regular expressions, in order of definition in the configuration file.     If #3 yielded a match, that result is used. Else the match from #2 is used.      1. =前缀的指令严格匹配这个查询。如果找到,停止搜索。     2. 所有剩下的常规字符串,最长的匹配。如果这个匹配使用^〜前缀,搜索停止。     3. 正则表达式,在配置文件中定义的顺序。     4. 如果第3条规则产生匹配的话,结果被使用。否则,使用第2条规则的结果。

nginx location匹配规则

https://linux.cn/article-5714-1.html

配置 nginx.service

# /usr/lib/systemd/system/nginx.service [Unit] Description=nginx - high performance web server After=network.target remote-fs.target nss-lookup.target  [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop  [Install] WantedBy=multi-user.target

 

转载于:https://www.cnblogs.com/chy1000/p/5610931.html

  • 点赞
  • 收藏
  • 分享

    • 文章举报

nginx nginx
weixin_34278190
发布了160 篇原创文章 · 获赞 62 · 访问量 18万+

私信 关注

原文始发于:nginx

主题测试文章,只做测试使用。发布者:sys234,转转请注明出处:http://www.cxybcw.com/84293.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code