科技常识:linux服务器下LNMP安装与配置方法

2021-04-01 21:18:51
导读今天小编跟大家讲解下有关科技常识:linux服务器下LNMP安装与配置方法,相信小伙伴们对这个话题应该也很关注吧,小编也收集到了有关科技常

今天小编跟大家讲解下有关科技常识:linux服务器下LNMP安装与配置方法,相信小伙伴们对这个话题应该也很关注吧,小编也收集到了有关科技常识:linux服务器下LNMP安装与配置方法的相关资料,希望小伙伴会喜欢也能够帮助大家。

Nginx与apache、lighttp性能综合对比,如下图:

注意:关闭rpm默认安装的apache和mysql

1.准备php函数的rpm包

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers2.准备lnmp其他的源代码包

wget http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.8.46.tar.gzwget http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.14.tar.gzwget http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.14-fpm-0.5.14.diff.gzwget http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.5.3-m3.tar.gzwget http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.13.1.tar.gzwget http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gzwget http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gzwget http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgzwget http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gzwget http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-8.10.tar.gzwget http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.6.1.tar.bz2wget http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgzwget http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gzwget http://blog.s135.com/soft/linux/nginx_php/imagick/imagick-2.3.0.tgz3.安装php-5.2.14源代码包所需要的函数支持包

复制代码 代码如下:tar zxvf libiconv-1.13.1.tar.gzcd libiconv-1.13.1/./configure --prefix=/usr/localmakemake installcd ../

(libiconv库为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换)

复制代码 代码如下:tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/./configuremakemake installcd libltdl/./configure --enable-ltdl-installmakemake installcd ../../

(libmcrypt是加密算法扩展库。支持DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SAFER+等算法。)

复制代码 代码如下:tar zxvf mhash-0.9.9.9.tar.gzcd mhash-0.9.9.9/./configuremakemake installcd ../(加密算法支持)ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.laln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.soln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.aln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.laln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.soln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-configtar zxvf mcrypt-2.6.8.tar.gzcd mcrypt-2.6.8/./configuremakemake installcd ../

4. 编译安装MySQL 5.5.3-m3

复制代码 代码如下:groupadd mysqluseradd -g mysql mysqltar zxvf mysql-5.5.3-m3.tar.gzcd mysql-5.5.3-m3./configure --prefix=/usr/local/mysql --without-debug --enable-thread-safe-client --with-pthread --enable-assembler --enable-profiling --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --with-extra-charsets=all --with-plugins=all --with-mysqld-user=mysql --without-embedded-server --with-server-suffix=-community --with-unix-socket-path=/tmp/mysql.sockMake #编译Make install#安装Cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf#准备mysql配置文件Vi /etc/my.cnf[client]default-character-set=utf8#修改客户端和连接字符集[mysqld]character-set-server=utf8#修改服务器和数据库字符集collation-server = utf8_general_ci#修改服务器校验字符集 登陆mysql后可以\s查看字符集Setfacl -m u:mysql:rwx -R /usr/local/mysqlSetfacl -m d:u:mysql:rwx -R /usr/local/mysql#设置权限/usr/local/mysql/bin/mysql_install_db --user=mysql#安装mysql和test数据库/usr/local/mysql/bin/mysqld_safe --user=mysql &#启动mysql服务/usr/local/mysql/bin/mysqladmin -uroot password 123#修改mysql登录密码为123/usr/local/mysql/bin/mysql -uroot -p123 #用mysql登录

5. 编译安装PHP(FastCGI模式。使用fastCGI管理php,加快php解析速度)

复制代码 代码如下:tar zxvf php-5.2.14.tar.gzgzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1#-p 1 是数字#解压并打补丁,让php支持fpm来方便管理php-cgi进程(使用php-fpm管理fastCGI)# gzip -c 保留源文件 -d 解压cd php-5.2.14/./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soapmake ZEND_EXTRA_LIBS='-liconv'#编译过程设定变量(编译过程需要)make installcp /lnmp/php-5.2.14/php.ini-dist /usr/local/php/etc/php.inicd ../

6.准备编译安装PHP5扩展模块

复制代码 代码如下:tar zxvf memcache-2.2.5.tgzcd memcache-2.2.5//usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-configmakemake installcd ../tar jxvf eaccelerator-0.9.6.1.tar.bz2cd eaccelerator-0.9.6.1//usr/local/php/bin/phpize./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-configmakemake installcd ../(eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍)tar zxvf PDO_MYSQL-1.0.2.tgzcd PDO_MYSQL-1.0.2//usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysqlmakemake installcd ../tar zxvf ImageMagick.tar.gzcd ImageMagick-6.5.1-2/./configuremakemake installcd ../(ImageMagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式)tar zxvf imagick-2.3.0.tgzcd imagick-2.3.0//usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-configmakemake installcd ../

7. 修改php.ini文件,让php模块生效

复制代码 代码如下:vi /usr/local/php/etc/php.iniextension_dir ="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"手工添加extension ="memcache.so"extension ="pdo_mysql.so"extension ="imagick.so"再查找output_buffering = Off修改为output_buffering = On再查找 ; cgi.fix_pathinfo=0修改为cgi.fix_pathinfo=0,防止Nginx文件类型错误解析漏洞

8. 在php.ini中配置eAccelerator加速PHP

复制代码 代码如下:mkdir -p /usr/local/eaccelerator_cache#准备eaccelerator缓存目录vi /usr/local/php/etc/php.ini[eaccelerator]zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"eaccelerator.shm_size="64"eaccelerator.cache_dir="/usr/local/eaccelerator_cache"eaccelerator.enable="1"eaccelerator.optimizer="1"eaccelerator.check_mtime="1"eaccelerator.debug="0"eaccelerator.filter=""eaccelerator.shm_max="0"eaccelerator.shm_ttl="3600"eaccelerator.shm_prune_period="3600"eaccelerator.shm_only="0"eaccelerator.compress="1"eaccelerator.compress_level="9"

9.准备php-cgi和nginx进程执行者用户

useradd nginx10. 创建php-fpm配置文件- php-fpm.conf

vi /usr/local/php/etc/php-fpm.conf<value name="display_errors">0</value>#0改成1,页面上会输出错误日志. 取消注释unix user of processes <value name="user">nginx</value> Unix group of processes <value name="group">nginx</value> 取消注释

<value name="max_children">128</value>#最大子进程数128,如果内存小于2G,则64个最佳<value name="rlimit_files">65535</value># Set open file desc rlimit,同时打开的文件数,linux系统允许同时打开的文件数为1024,修改linux系统中允许同时打开的文件,ulimit -SHn 65535,而且这个参数重启后还能生效,加到 /etc/profile全局配置文件的最后,开机就会生效,ulimit -a查看open files 65535 ulimit 用户控制shell启动进程所占用的资源 -H 设定硬性资源限制,也就是管理员设定的限制 -S 设定软性资源限制,弹性限制 -n 设定可同时打开的最大文件个数 -f 设定单个文件最大大小 -a 查看目前的限制<value name="max_requests">1024</value>#最大请求数, How much requests each process should execute before respawn.一个子进程能够回应1042个请求11. 启动php-cgi(fastcgi)进程,监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为nginx:

复制代码 代码如下:/usr/local/php/sbin/php-fpm start#启动php-cgi/usr/local/php/sbin/php-fpm reload#重新加载配置文件/usr/local/php/sbin/php-fpm stop#关闭php-fpm,此时nginx肯定连不上php

12. 安装Nginx所需的pcre库

复制代码 代码如下:tar zxvf pcre-8.10.tar.gzcd pcre-8.10/./configuremake && make installcd ../

13. 安装Nginx

复制代码 代码如下:tar zxvf nginx-0.8.46.tar.gzcd nginx-0.8.46/./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_modulemake && make installcd ../

14. 修改Nginx配置文件

复制代码 代码如下:vi /usr/local/nginx/conf/nginx.confuser nginx nginx;worker_processes 1;#相当于cpu个数error_log logs/nginx_error.log;#错误日志pid /usr/local/nginx/nginx.pid;#主进程PID保存文件#Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 65535;#文件描述符数量events { use epoll;#网络I/O模型,建议linux使用epoll,FreeBSD使用kqueue worker_connections 65535;#最大允许连接数}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;#tcp延迟 keepalive_timeout 65;#保持连接时间

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;#fastcgi设置 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on;#网络压缩设置 #limit_zone crawler $binary_remote_addr 10m; server { listen 80;#监听端口 server_name 192.168.150.253;#主机名,或IP。如果是主机名,要能够DNS解析location / {root html;#网站主目录。/usr/local/nginx/html/index index.html index.htm index.php;#默认网页顺序} #limit_conn crawler 20; location ~ .*\.(php|php5)?$#~:匹配 后面正则表达式:.*任意字符 \.点 php或php5结尾。碰到网页文件名是.php或.php5结尾 { root html; #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000;#连接fastcgi,用来解析php语句 fastcgi_index index.php;#首页为index.php #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_namefastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#启动fast-cgi,可以在每个服务中启动,也可以放入/usr/local/nginx/conf/fastcgi_params,每个server都可以享用 include fastcgi_params;#包括fastcgi_params中参数 } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d;#图片格式缓存30天 } location ~ .*\.(js|css)?$ { expires 1h;#js/css缓存2小时 } 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 /data1/logs/access.log access; }}

15. 在/usr/local/nginx/conf/目录中创建fastcgi_params文件

复制代码 代码如下:Vi /usr/local/nginx/conf/fastcgi_params (与配置文件中,只写一个就好)fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#建议把fastcgi_param写到nginx.conf中而不是把它写到fastcgi_params配置文件中,否则配置不够灵活,比如后面默认php设置和alias php设置中,他们的php页面的系统地址是不同的,比如:默认php文件->/usr/local/nginx/html/index.phpAlias php文件->/mnt/bbs/index.php这个时候你会发现fastcgi_params中的SCRIPT_FILENAME的值是相同的,这样会导致alias php的页面出不来,而配置在nginx.conf中各自配置各自的php系统地址,这样比较灵活.#如果你觉得每个连接php的配置中都要加这一句话有点冗余,那就把它加入到fastcgi_params文件中,这样只需要加一次,其他所有的nginx.conf中的有关连接fastcgi的一块就不用加fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name这一句话了.

16.配置开机启动nginx,php-fpm,ulimit

1)nginxVi /etc/rc.local/usr/local/nginx/sbin/nginx2)php-fpmVi /etc/rc.local/usr/local/php/sbin/php-fpm start3)ulimitVi /etc/profileulimit -SHn 655354)mysqlVi /etc/rc.local/usr/local/mysql/bin/mysqld_safe --user=mysql &17.检查nginx配置文件语句错误/usr/local/nginx/sbin/nginx -t18.平滑重启nginx进程1)Pkill -HUP nginx2)kill -HUP `pgrep -uroot nginx` Pgrep -uroot nginx 取出nginx主进程PID3)/usr/local/nginx/sbin/nginx -s reload19. 编写每天定时切割Nginx日志的脚本

1、创建脚本/usr/local/nginx/sbin/cut_nginx_log.shvi /usr/local/nginx/sbin/cut_nginx_log.sh#!/bin/bash# This script run at 00:00# The Nginx logs pathlogs_path="/usr/local/nginx/logs/"mkdir -p ${logs_path}$(date -d"yesterday"+"%Y")/$(date -d"yesterday"+"%m")/mv ${logs_path}access.log ${logs_path}$(date -d"yesterday"+"%Y")/$(date -d"yesterday"+"%m")/access_$(date -d"yesterday"+"%Y%m%d").logkill -USR1 `cat /usr/local/nginx/nginx.pid`

2、设置crontab,每天凌晨00:00切割nginx访问日志crontab -e00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh

20.配置nginx虚拟主机Sina和sohu域名事先解析

复制代码 代码如下:Vi /usr/local/nginx/conf/nginx.conf==èwww.sina.com公司网站server { listen 80; server_name www.sina.com; access_log logs/sina.access.log main; location / { root /web/sina; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { root /web/sina; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }==èwww.sohu.com公司网站server { listen 80; server_name www.sohu.com; access_log logs/sohu.access.log main; location / { root /web/sohu; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { root /web/sohu; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }最后在客户端测试虚拟主机www.baidu.com和www.sina.com两家公司网站21.列表页显示location / { autoindex on; #打开列表页 root html; index index.html index.php index.htm; }22.虚拟目录设置location /bbs{ alias /mnt/bbs/; }#这样配置html静态文件是可以出来的,但是php动态页面出不来,而且会浏览器的页面上会显示"No input file specified."的报错,其实是php系统文件地址( SCRIPT_FILENAME)找不到,也就是说fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;中的$document_root$fastcgi_script_name不是真正的/mnt/bbs/index.php的地址,这可怎么解决:location /bbs { alias /mnt/bbs/; index bbs.php index.html index.php; } location ~ ^/bbs/ { root /mnt/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; log_format bbs '$document_root$fastcgi_script_name '; access_log logs/bbs.access.log bbs; }#后面两行是关于日志的,就是为了更好的观察由nginx提交给fastcgi的php的系统地址SCRIPT_FILENAME,在这里我用$request_filename来给SCRIPT_FILENAME赋值,在日志中的结果为/mnt/bbs/index.php,在这里我发现一个问题就是$request_filename中的root设置为/mnt,否则$request_filename的值为:/mnt/bbs/bbs/index.php.由以上可以得到一个结论,就是默认php设置也可以这样设置关于SCRIPT_FILENAME:location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; log_format php '$document_root$fastcgi_script_name '; access_log logs/php.access.log php; }#此时从日志中可以看到,$request_filename的值为/usr/local/nginx/html/index.php,而以前默认的/scripts$fastcgi_script_name显然是错的php系统地址,日志中显示为/scripts/index.php23.nginx状态监控location /nginxstatus{ stub_status on; access_log off; }#客户端访问网址:http://www.baidu.com/nginxstatus24.rewrite正则过滤location ~ \.php$ { proxy_pass http://127.0.0.1; }Rewrite指令最后一项参数为flag标记,支持的flag标记如下:Last 标示完成rewrite规则Break 不再匹配后面的规则Redirect 302临时重定向Permanent 301永久重定向Last和break用来实现uri重写,浏览器地址栏的url地址不变,但在服务器访问的路径发生了变化,redirect和permanent用来实现url跳转,浏览器地址栏会显示跳转后的url地址,使用alias指令时必须使用last标记,使用proxy_pass指令时要使用break标记,last标记在本条rewrite规则执行完毕后,会对其所在的server{}标签重新发起请求,而break标记则在本条规则匹配完成后,终止匹配,不再匹配后面的规则.在匹配的过程中,nginx将首先匹配字符串,然后再匹配正则表达式,匹配到第一个正则表达式后,会停止搜索,如果匹配到正则表达式,则使用正则表达式的搜索结果,如果没有匹配到正则表达式,则使用字符串的搜索结果.可以使用前缀"^~"来禁止匹配到字符串后,再去检查正则表达式,匹配到url后,将停止查询.使用前缀"="可以进行精确的url匹配,如果找到匹配的uri,则停止查询,例如"location=/",只能匹配到"/",而"/test.html"则不能被匹配.正则表达式的匹配,按照它们在配置文件中的顺序进行,写在前面的优先.Location = / { #仅仅匹配 / [configuration A]}Location / { #匹配任何以/开头的查询,但是正则表达式及较长的字符串(/bbs/)将被优先匹配. [configuration B]}Location ^~ /images/ { #匹配任何以/images/开头的字符串,并且停止搜索,所以正则表达式将不会被检查. [configuration C]}Location ~* \.(gif|jpg|jpeg)$ { #匹配以.gif、.jpg、.jpeg结尾的任何请求,但是,/images/内的请求将使用configuration c的配置 [configuratoin D]}请求处理匹配结果示例:/ -> configuration A;/documents/document.html -> configuration B;/images/1.gif -> configuration c;/documents/1.jpg -> configuration D;例1:域名跳转输入www.sina.com,跳转到www.sohu.com server { listen 80; server_name www.sina.com; access_log logs/sina.access.log main; location / { root /web/sina; index index.html index.htm; if (-e $request_filename){ # -e 是否存在 rewrite ^/ http://www.sohu.com/ permanent; # ^/ 域名以/开头。//www.sina.com ,也可以写为.* 任意都跳转 } } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }}server { listen 80; server_name www.sohu.com; access_log logs/sohu.access.log main; location / { root /web/sohu; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }例2:静态index.html跳转到动态index.php文件cd /web/sina/vi index.php <? print_r ($_GET);?> Vi nginx.conf server { listen 80; server_name www.sina.com; access_log logs/sina.access.log main; location / { root /web/sina; index index.html index.htm; rewrite ^/index(\d+).html /index.php?id=$1 last;# ^/ 以/开头。\d+ 多个数字。()第一个变量。 /index.php?id=$1 把第一个变量赋予id变量,传入index.php文件 } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { root /web/sina; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}在客户端输入:http://www.sina.com/index2.html 会跳转到index.php,把2当变量传入index.php程序25.代理负载均衡技术(反向代理)upstream myweb1 { #定义地址池 192.168.190.190 反向代理upstream myweb1 { server 192.168.190.190:80; server 192.168.190.191:80;} server { listen 80; server_name www.sohu.com; location / { proxy_pass http://myweb1; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } } server 192.168.244.10:80; server 192.168.244.11:80;} server { listen 80; server_name www.sohu.com; 192.168.190.191 #使用www.sohu.com访问location / {proxy_pass http://myweb1; #使用地址池proxy_set_header Host $host; #利用HOST变量向后端服务器传递需要解析的客户端访问的域名(传递域名)proxy_set_header X-Forwarded-For $remote_addr; #$remote_addr 把客户端真实IP赋予X-Forwarded-For。后端服务器才能获取真实的客户端IP。以便记录日志,要不日志中记录的访问信息都是负载服务器,而不是客户端(传递IP)}}26.模块设置Error_log#错误日志Include #包含子配置文件,0.6版本以后子配置文件放在nginx.conf所在的路径下Pid#主进程id号User#nginx nginx表明nginx进程的执行者和组Worker_processes#与cpu个数相同,4核cpu为4Worker_rlimit_nofile 65535#打开的文件描述符,不过提前得设置ulimit -SHn 65535,即linux允许的打开文件个数Worker_connectiones 65535#客户端最大连接数65535Alias#虚拟目录Error_page#404,500错误跳转页面Index#index index.html,设置默认首页Keepalive_timeout#即tcp持续连接超时时间Limit_rate#limit _rate 100k,即限速为100KB/sLimit_rate_after#limit_rate_after 1m,即下载文件超过1m,则进入limit_rate限速阶段Listen#listen 192.168.100.1:80,即设置ip和端口Location#该指令允许对不同的uri进行不同的配置,可以是字符串、正则表达式Resolver#resolver 8.8.8.8,为nginx设置dns域名指向Root#设置网站根目录Send_timeout#超时时间是指进行了两次tcp握手,还没有转为established状态的时间,如果超过这个时间,客户没有响应,nginx则关闭连接,可以用来防止ddos攻击Sendfile#启用或禁用sendfile()函数,作用于拷贝两个文件描述符之间的操作函数,这个拷贝是在内核中操作的,比read和write拷贝高效得多Server#普通web配置或虚拟主机的配置的区域Server_name#根据客户端请求header头信息中的host域名,来匹配该请求应该由哪个虚拟主机配置或服务器的ipTcp_nodelay#封装tcp/ip数据包的等待时间,也叫纳格算法,在keepalive开启才有用Tcp_nopush#要求sendfile开启的时候才起作用,设置该选择的原因是nginx在linux上,试图在一个包中发送它的httpd应答头Allow#allow 192.168.100.254,只允许192.168.100.254访问Deny#deny all,拒绝其他任何人访问Autoindex#autoindex on,即开启列表页功能Charset#charset utf8;source_charset gbk,把服务器上的gbk网页编码转换成utf8输出给客户端Fastcgi_pass#fastcgi_pass 127.0.0.1:9000;#fastcgi_index index.php;#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;#include fastcgi_params;#fastcgi_pass后跟的是php-cgi进程的ip和端口Access_log#正确日志Proxy_pass# proxy_pass http://myweb1,即后跟的是nginx代理负载池upstream中的服务器Proxy_set_header# proxy_set_header Host $host,设置把$host带给后端的nginx服务器Proxy_temp_path#用户指定一个本地目录缓冲较大的代理请求,类似于client_body_temp_pathStub_status# stub_status on,即开户状态监控Image_filter#它指定适用于图片的转换类型

来源:爱蒂网

免责声明:本文由用户上传,如有侵权请联系删除!

猜你喜欢

最新文章