質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.53%

Nginx初心者。confの構文がわからずShort URLの設定がわからない

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 263

imoimo

score 6

ApacheからNginxへの移行組です。
様々なページを参考にconfの設定をしhttpsを使ったHPの公開には成功しています。

▶問題点
・必要or追加が必要な構文の選定ができない
.htaccessが使えないため解説ページを参考にconfを設定しているのですが、追加で入力が必要となる構文の選定ができず設定ができません。

▶参考サイト①
https://www.mediawiki.org/wiki/Manual:Short_URL/Nginx

server {
    # [...]
    # Location for wiki's entry points
    location ~ ^/w/(index|load|api|thumb|opensearch_desc)\.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/w/$fastcgi_script_name;
        fastcgi_pass 127.0.0.1:9000; # or whatever port your PHP-FPM listens on
    }
    # Images
    location /w/images {
        # Separate location for images/ so .php execution won't apply
    }
    location /w/images/deleted {
        # Deny access to deleted images folder
        deny all;
    }
    # MediaWiki assets (usually images)
    location ~ ^/w/resources/(assets|lib|src) {
        try_files $uri 404;
        add_header Cache-Control "public";
        expires 7d;
    }
    # Assets, scripts and styles from skins and extensions
    location ~ ^/w/(skins|extensions)/.+\.(css|js|gif|jpg|jpeg|png|svg)$ 
        try_files $uri 404;
        add_header Cache-Control "public";
        expires 7d;
    }
    # Favicon
    location = /favicon.ico {
        alias /w/images/6/64/Favicon.ico;
        add_header Cache-Control "public";
        expires 7d;
    }
    ## Uncomment the following code if you wish to use the installer/updater
    ## installer/updater
    #location /w/mw-config/ {
    #    # Do this inside of a location so it can be negated
    #    location ~ \.php$ {
    #        include /etc/nginx/fastcgi_params;
    #        fastcgi_param SCRIPT_FILENAME $document_root/w/mw-config/$fastcgi_script_name;
    #        fastcgi_pass 127.0.0.1:9000; # or whatever port your PHP-FPM listens on
    #    }
    #}

    # Handling for the article path (pretty URLs)
    location /wiki/ {
        rewrite ^/wiki/(?<pagename>.*)$ /w/index.php;
        include /etc/nginx/fastcgi_params;
        # article path should always be passed to index.php
        fastcgi_param SCRIPT_FILENAME $document_root/w/index.php;
        fastcgi_param PATH_INFO $pagename;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_pass 127.0.0.1:9000; # or whatever port your PHP-FPM listens on
    }
    # Allow robots.txt in case you have one
    location = /robots.txt {
    }
    # Explicit access to the root website, redirect to main page (adapt as needed)
    location = / {
        return 301 https://www.example.com/wiki/Main_Page;
    }
    # Every other entry point will be disallowed.
    # Add specific rules for other entry points/images as needed above this
    location / {
        return 404;
    }
}

▶参考サイト②
https://www.mediawiki.org/wiki/Manual:Short_URL/Page_title_-_nginx,_Root_Access,_PHP_as_a_CGI_module

server {
    server_name www.example.com example.com;
    listen 80;

    root /home/user/public_html;
    index index.php index.html index.htm;

    access_log /var/log/nginx/access-example.log;
    error_log /var/log/nginx/error-example.log;

    location ~ \.ht {
        deny all;
    }

    location / {
        try_files $uri $uri/ @rewrite;
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php;
    }

    location ^~ /maintenance/ {
        return 403;
    }

    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;

        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;

        fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

        try_files $uri @rewrite;
    }
}

▶現状
・nginx version: nginx/1.17.1(Centos7)
・var/www/html/test
・test.com

server {
    listen 80;
    server_name test.com;
    rewrite ^ https://$server_name$request_uri? permanent;
}

server {
    listen 443 ssl;
    server_name test.com;
    access_log /var/log/nginx/test.com-access.log main;
    error_log /var/log/nginx/test.com-error.log;
    root    /var/www/html/test;

    ssl_certificate /etc/letsencrypt/live/test.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/test.com/privkey.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets on;
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        index   index.php index.html index.htm;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

現状のConfと参考サイトのConfをどう組み合わせたらいいのかわかりません。
非常に申し訳ないのですが、ご享受頂けたら幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yukikp

    2019/07/10 18:54

    これは、どのようなルールでURLを利用するかによるのではないでしょうか?

    例えばWordPressなんかでは、
    http://hogehoge.com/suriusuri/
    というアクセスが来たら、
    http://hogehoge.com/index.phpにアクセスし、surisuriをパラメーターとして処理するようにする書き方にしていますし、

    単に.phpという拡張子を省略しても該当.phpファイルを呼び出したいという意味でのShort URLであれば、
    location / {
    index index.php index.html;
    try_files $uri $uri.php $uri.html $uri/ 404.html=404;
    }
    みたいな書き方でいいんじゃないでしょうか。

    キャンセル

  • imoimo

    2019/07/10 20:50

    返信有難うございます。
    たしかにどのようなURLにしたいかを記載していませんでした。

    Mediawikiの初期設定ではURLが
    http://test.com/index.php?title=メインページ
    になります。
    これを参考サイトを参考にconfを設定すると
    http://test.com/wiki/メインページ
    に変更することができるとされています。

    ここまででも良いのですが、過去Apacheで.htaccessを利用しできていたときは
    http://test.com/メインページ
    にしており希望は③です。

    Nignxは難しいのか解説サイトが少ない・・・

    URLについての参考サイトをもう一つ
    https://www.mediawiki.org/wiki/Manual:Short_URL

    キャンセル

回答 1

check解決した方法

0

yukikpさん
大きなヒントをありがとうございます!!
参考にさせてもらいつつ設定してみたら解決しました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる