在/etc/nginx/sites-enabled/ www.example.com中有未知的指令example.com:3

lf3rwulv  于 2022-11-02  发布在  Nginx
关注(0)|答案(8)|浏览(180)

我已经跟随这个网站http://raspberrypihelp.net/tutorials/24-raspberry-pi-webserver在我的树莓派上设置HTTP服务器nginx,并试图设置一个网站调用example.com。但当我运行sudo service nginx restart时,它说
正在重新启动nginx:在/etc/nginx/sites-enabled/ www.example.com中有未知的指令example.com:3
下面是example.com中的代码。

server {

    server_name example.com 192.168.1.88;

    access_log /srv/www/example.com/logs/access.log;

    error_log /srv/www/example.com/logs/error.log;

    root /srv/www/example.com/public/;

    location / {

        index index.php index.html index.htm;

        try_files $uri $uri/ /index.php?$args;

    }

    location ~ \.php$ {

        include /etc/nginx/fastcgi_params;

        fastcgi_pass unix:/var/run/php5-fpm.sock;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME /srv/www/example.com/public$fastcgi_script_name;

    }

    location /phpmyadmin {

        root /usr/share/;

        index index.php index.html index.htm;

        location ~ ^/phpmyadmin/(.+\.php)$ {

            try_files $uri =404;

            root /usr/share/;

            fastcgi_pass unix:/var/run/php5-fpm.sock;

            fastcgi_index index.php;

            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

            include /etc/nginx/fastcgi_params;

        }

        location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {

            root /usr/share/;

        }

    }

    location /phpMyAdmin {

        rewrite ^/* /phpmyadmin last;

    }

}

我只是按照步骤操作,但它无法成功运行。

1tuwyuhd

1tuwyuhd1#

我有同样的问题,这是我复制/粘贴配置代码从网络和一些肮脏的EOL(行尾)字符在那里。
编辑器没有显示它们,但nginx将它们视为指令。
只是删除了每一个EOL,并再次添加。

rdrgkggo

rdrgkggo2#

听起来你在这里做了一些复制和粘贴的工作。在行尾(EOL)处捕捉到一些不可见的额外字符并不罕见。试试这个:
使用此工具运行文本:http://www.textfixer.com/tools/remove-line-breaks.php
然后修复可能已被删除并将受注解影响的任何中断。
这对我有用,希望对你有用。

fd3cxomn

fd3cxomn3#

看起来nginx二进制文件是用--without-http_fastcgi_module选项编译的。这不是默认值。请尝试下载或编译其他二进制文件。
试着跑

nginx -V

(with大写的V)来查看使用了哪些选项来编译nginx。

2admgd59

2admgd594#

我在conf文件中间编辑了一些文本,nginx在文件本身的开头就开始显示这个错误。我复制了文件的内容,创建了一个新文件,将内容粘贴到那里,nginx就不再显示这个错误。

sbdsn5lh

sbdsn5lh5#

我在运行“sudo nginx -t”时遇到了类似的问题,错误消息为“unknown directive 'index.html'”。在更正index.html中的HTML语法错误后,问题得到了解决。

fjaof16o

fjaof16o6#

即使您遗漏了分号,也会遇到相同的错误。

// Missed semicolon
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock

// With semicolon
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
nwlqm0z1

nwlqm0z17#

在我的例子中,我在github中存储了配置文件nginx.conf。我对原始版本的代码做了wget,因此导致了这个错误。
后来,我克隆了我的存储库,并使用了克隆中的nginx.conf文件,问题得到了解决。

gab6jxml

gab6jxml8#

我真的不明白怎么会这样,
我已经“docker运行“了我的nginx 1.14(debian的默认设置:bullseye)来提取它的默认nginx.conf,并打算更新它,然后将它用于我的Dockerfile。
总之,在阅读了这个线程的评论后,发现这个文件是“UTF-16 LE”...我不是真正的Maven,但不是“UTF-8”。
解为:
从容器内部观察到的问题:

me@docker-nginx $ head nginx.conf 
��
user www-data:qgis;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
error_log /dev/stdout warn;

events {
    worker_connections 768;

me@docker-nginx  $ dos2unix nginx.conf 
dos2unix: converting UTF-16LE file nginx.conf to UTF-8 Unix format...

还在工作目录下求解:
智能理念:在“UTF-8”之后选择“转换”

相关问题