Windows下Nginx以服务的方式运行

从wnmp发布以来,很多朋友就问Windows下如何将Nginx加入服务中,以便于服务器重启后自动运行,我在朋友的留言中回复了,可能不是很好找,便整理在此,便于需要的朋友查找。

假设nginx安装在c:\nginx\下:

1.下载微软服务注册工具srvany.exe, instsrv.exe, srvany-instsrv存放到c:\nginx\目录下

2.安装Nginx服务, 将命令行切换到c:\nginx\,执行下列命令

instsrv NGINX c:\nginx\srvany.exe

3.在c:\nginx\下,新建一个nginx.reg文件,输入一下内容:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NGINX\Parameters]
"Application"="C:\\nginx\\nginx.exe"
"AppParameters"=""
"AppDirectory"="C:\\nginx\\"

5.让服务与程序关联起来, 命令行执行

regedit /s nginx.reg

6.编辑启动nginx脚本start-nginx.bat(关闭脚本不用变), 让程序以服务方式运行

@ECHO OFF
net stop nginx
net start nginx
EXIT

完成~

最近一直在研究Linux下的Nginx自动安装,呵呵,鼓励大家迁移到Linux平台...

CentOS 5.2安装以后的一些初始化操作

1、建立一个普通权限的用户
因为root用户对系统具有全权的操作权限,为了避免一些失误的操作,建议在一般情况下,以一般用户登录系统,必要的时候需要root操作权限时,再通过“su -”命令来登录为root用户进行操作。
useradd pysche
passwd pysche
usermod -G wheel pysche
修改pam配置,使非wheel组用户不能使用su命令登录为root:
vi /etc/pam.d/su
找到
#auth required /lib/security/$ISA/pam_wheel.so use_uid
将行首的 # 去掉。
然后
vi /etc/login.defs
在文件末尾加上
SU_WHEEL_ONLY yes
2、安装yum加速工具,并更新系统
yum install yum-fastestmirror -y
yum upgrade -y
3、安装mlocate工具
yum install mlocate -y
4、root邮件的修改
在系统出现错误或有重要通知发送邮件给root的时候,让系统自动转送到我们通常使用的邮箱中,这样方便查阅相关报告和日志。
vi /etc/aliases
在文件末尾加上
5、locate命令设置
vi /etc/updatedb.conf
在末尾增加
DAILY_UPDATE=yes
然后运行
updatedb
6、关闭不必要的服务
比如cups
/etc/init.d/cups stop
chkconfig cups off
除了以下服务以外,其他服务默认的都可以采用刚才的方法关闭:
atd
crond
irqbalance
lvm2-monitor
microcode_ctl
network
sendmail
sshd
syslog
7、停止ipv6
vi /etc/modprobe.conf
在文件末尾加上
alias net-pf-10 off
alias ipv6 off
8、关闭SELinux
vi /etc/selinux/config
将其中的
SELINUX=enforcing
改为
SELINUX=disabled
9、安装sudo工具
yum install sudo -y
安装好了以后,修改sudo的配置
vi /etc/sudousers
# %wheel ALL=(ALL) NOPASSWORD:ALL
去掉前面的 # , 然后保存文件。
这样修改了以后,只有所有属于wheel组的用户能执行sudo命令,并且执行sudo命令时只需要输入自己的密码即可。
10、修改SSH配置
vi /etc/ssh/sshd_config
增加ServerKey的强度
找到
#ServerKeyBits 768
改为
ServerKeyBits 1024
不允许root用户直接登录
#PermitRootLogin Yes
改为
PermitRootLogin no
禁止空密码登录
找到
#PermitEmptyPasswords no
去掉前面的 #
全部修改完了以后,重启服务器
init 6

Apache升级到了Nginx的几个注意点

最近把整站从apache升级到了nginx,客户的站点大概有30台服务器大部分架构位tomcat+apache,只有一个php页面
一下是我升级遇到的几个问题的注意点

1.
当我们去访问服务器上的一个目录时候,他不会自动加上一个/ ,浏览器会给出改页无法打开的错误,这个时候浏览器去取的地址实际上是upstream中所写的地址和端口或如果没有使用upstream时 当使用localhost做servername时候 浏览器会去访问http://127.0.0.1/dir
解决办法
在每个虚拟主机的server定义中加上
if (-d $request_filename) {
                           rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
                }
注意 root字段的定义也一定要出现在server中 如果server中没有定义root 错误还将存在
例子:
server {
                listen                800;
                server_name www.1.com;
                root   /opt/1-index;   //这边定义了 就会在目录访问的时候加上/  如果这边没有定义这个 上面的url重写依然不会生效
                include                vhost/alias.conf;
                include                vhost/proxy.conf;
                if (-d $request_filename) {
                           rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
                }
                error_page   405 =200 @405;
                location @405 {
                proxy_pass      http://PROXY_STATIC;
                }
                location / {
                        root   /opt/1-index;        //只在这边定义是没有用的,这边甚至可以不做定义
                        rewrite ^/(\d+)\.home$ /index.html?userId=$1 last;
                        index  index.html index.htm;
                }                       

2.url重写的注意事项:
原有的url支持正则  重写的url不支持正则
rewrite ^/(\d+)\.home$ /index.html?userId=$1 last;
这个重写中 ^/(\d+)\.home$ 这部分支持正则
而/index.html?userId=$1
不要用正则 也不匹配正则 /index.html?*userId=$1 这样他就会去找.html?*userId=$1这个url 然后给你个404 not found

3.post方式去访问静态文件
Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误。(但是之前程序在apache上跑 没问题)
如果有这个需求呢 就要做如下配置了
error_page   405 =200 @405;
                location @405 {
                proxy_pass      http://PROXY_STATIC;
        #        root /usr/local/nginx/html;
                }
把所有405错误重定向成200 然后吧所有405错误的请求全部交给一个代理去执行
或者写上本地路径,因为我的路径比较多 所以重定向请求到一台web服务器上了

4.。关于防盗链
1.com的需求是 不是从本来来的请求给除一个403
因为在虚拟主机里配置毫无作用 可能是我们用的是虚拟目录的缘故
所以我们直接对目录做的防盗链
在alias里
别名配置
                location /res/ {
                alias   /opt/Src/;
                valid_referers none blocked server_names *.1.com ;
                if ($invalid_referer) {
        return 403;
                }
        }

5,关于动态请求转发
location  ~ ^/login/(.*\.do)$ {
                proxy_pass      http://login ;
        proxy_set_header  X-Real-IP  $remote_addr;
}
~ ^/login/(.*\.do)$ 这个表示 凡是匹配/login/ 下 .do的都转发到一个upstream池里处理 这里的$符号并不起多大作用 只要是有.do的他会全部转 并不是以.do结尾的才转

6.关于php上传文件大小的问题
只改php里的配置是没有用的
需要更改的地方还有nginx的配置

client_max_body_size 10M;
他的默认值是1M;

以上就是基本的注意点

(本文转载自CU论坛)

Linux下Nginx+PHP+MySQL+phpMyAdmin+eAcelerator自动编译安装软件 预告

此软件基于CentOS,主要应用与VPS,并在SWVPS.comthenynoc.com上测试成功.

软件已发布:LNMP-Linux下Nginx+PHP+MySQL+phpMyAdmin+eAcelerator一键安装包

此软件包含Nginx、PHP、MySQL、phpMyAdmin、eAcelerator,方便管理员已经想在自己的VPS上或独立主机上安装使用Nginx的站长使用。

本软件将于近期发布,敬请期待......

WordPress 2.7 启用 GZip压缩输出页面

WordPress 2.5 以后就关闭了 GZip 功能。可以使用以下几种方法中适合自己的方法开启:
方法1:

在根目录 index.php 中找到:
define(’WP_USE_THEMES’, true);
在后面加上:
ob_start(’ob_gzhandler’);
就OK了。

也可以加一点条件判断:
if(ereg(’gzip’,$_SERVER['HTTP_ACCEPT_ENCODING'])){ //判断浏览器是否支持Gizp
if(substr($_SERVER['REQUEST_URI'],0,10)!=’/wp-content/uploads/’) //排除不需要Gzip压缩的目录
ob_start(’ob_gzhandler’); //打开Gzip压缩
}

方法2:

如果服务器支持.htaccess文件,那么在wordpress根目录的.htaccess增加以下代码,如果没有.htaccess则新建后增加代码。增加完成后上传到wordpress根目录后即可。
php_value output_handler ob_gzhandler

方法3:

通过php.ini 启用Gzip, 添加如下代码来开启gzip。

output_buffering = Off
output_handler =
zlib.output_compression = On

zlib.output_compression_level = 6

zlib.output_compression_level = < 任何1—9的值,1的压缩比率最低, 建议取 6>

需要注意的是如果在.htaccess文件中禁止了gzip功能的话,那在php.ini文件中开启后需在.htaccess文件中开启,否则无效。
开启wordpress的gzip功能后,服务器将在页面传输前将页面压缩后传送,可以有效减少服务器的带宽使用,也可以加速页面下载。
这个网站可以查看页面是否启用 GZip,以及启用后页面的压缩率。

我用的GoDaddy的虚拟主机,能够自己重定义 php.ini,如果是PHP5就修改php5.ini~ 用 http://www.gidnetwork.com/tools/gzip-test.php 查看一下 ~压缩了72.8% ~ 速度也提升了~

WordPress 2.7 启用 GZip压缩输出页面

注意:这样就可以给所有php文件进行gzip压缩了。注意的是,这样启用gzip之后需要将程序原来的gzip功能去掉,例如discuz等的gzip不要启用,否则程序会报错。

WordPress页面模板选项丢失解决办法

最近碰到比较郁闷的事,在新建页面时,新建页面右边的页面模板选项总是不显示。如图:

原来是edit-page-form.php里面代码里面有个地方需要修改下。

找到<?php if ( 0 != count( get_page_templates() ) ) { ?> 修改成 <?php if ( 110 != count( get_page_templates() ) ) { ?>即可。

对了edit-page-form.php在wp-admin 文件夹里面。

注意:修改代码后可能不会立即显示出来,需要你更好为其他主题,再换为你的主题,就可以了载下拉列表中选择你的模板了。